DC0025

dirichlet_convolution_entry_past_support_zero

A summand beyond a positive input is zero because a positive-input divisor cannot exceed that input.

Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

Each retained summand has a witnessed n=d*q and actual signed multiplication. Zero and nondivisors contribute zero. Input and output values at zero are unrestricted; uniqueness is for positive represented values. The separate inverse family proves the unit-at-one criterion. Full G009 multiplicative-function closure is now admitted in the separate Alpha-v32 multiplicative-convolution family.

Exact theorem in conservative defined notation

∀ F. ∀ G. ∀ n. ∀ d. ∀ z. ¬n = 0 → Lt(n,d)DirichletEntry(F,G,n,d,z) → z = 0

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall F G n d z. ~(n=0) -> (exists pvs_gap_past_support_index. pvs_gap_past_support_index + S (n) = (d)) -> ((((~((d)=0)) /\ (exists dc_quotient_past_support_entry dc_left_past_support_entry dc_right_past_support_entry. (((n)=(d)*dc_quotient_past_support_entry) /\ (((exists dst_positive_code_past_support_entryleft dst_positive_scale_past_support_entryleft dst_negative_code_past_support_entryleft dst_negative_scale_past_support_entryleft dst_positive_past_support_entryleft dst_negative_past_support_entryleft. (((F) = (((((dst_positive_code_past_support_entryleft) + (dst_positive_scale_past_support_entryleft)) * S ((dst_positive_code_past_support_entryleft) + (dst_positive_scale_past_support_entryleft)) + ((dst_positive_scale_past_support_entryleft) + (dst_positive_scale_past_support_entryleft))) + (((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) * S ((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) + ((dst_negative_scale_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)))) * S ((((dst_positive_code_past_support_entryleft) + (dst_positive_scale_past_support_entryleft)) * S ((dst_positive_code_past_support_entryleft) + (dst_positive_scale_past_support_entryleft)) + ((dst_positive_scale_past_support_entryleft) + (dst_positive_scale_past_support_entryleft))) + (((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) * S ((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) + ((dst_negative_scale_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)))) + ((((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) * S ((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) + ((dst_negative_scale_past_support_entryleft) + (dst_negative_scale_past_support_entryleft))) + (((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) * S ((dst_negative_code_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)) + ((dst_negative_scale_past_support_entryleft) + (dst_negative_scale_past_support_entryleft)))))) /\ (((((exists ff_h_pvs_past_support_entryleftpositive. ff_h_pvs_past_support_entryleftpositive + S (dst_positive_past_support_entryleft) = S ((S (d)) * dst_positive_scale_past_support_entryleft)) /\ exists ff_q_pvs_past_support_entryleftpositive. dst_positive_code_past_support_entryleft = ff_q_pvs_past_support_entryleftpositive * S ((S (d)) * dst_positive_scale_past_support_entryleft) + (dst_positive_past_support_entryleft))) /\ (((((exists ff_h_pvs_past_support_entryleftnegative. ff_h_pvs_past_support_entryleftnegative + S (dst_negative_past_support_entryleft) = S ((S (d)) * dst_negative_scale_past_support_entryleft)) /\ exists ff_q_pvs_past_support_entryleftnegative. dst_negative_code_past_support_entryleft = ff_q_pvs_past_support_entryleftnegative * S ((S (d)) * dst_negative_scale_past_support_entryleft) + (dst_negative_past_support_entryleft))) /\ (exists ge_balance_positive_past_support_entryleftvalue ge_balance_negative_past_support_entryleftvalue. (((((dc_left_past_support_entry) = 2 * (ge_balance_positive_past_support_entryleftvalue) /\ (ge_balance_negative_past_support_entryleftvalue) = 0) \/ exists ge_signed_half_past_support_entryleftvaluedecode. (((dc_left_past_support_entry) = 2 * ge_signed_half_past_support_entryleftvaluedecode + 1 /\ (ge_balance_positive_past_support_entryleftvalue) = 0) /\ (ge_balance_negative_past_support_entryleftvalue) = S ge_signed_half_past_support_entryleftvaluedecode))) /\ ((dst_positive_past_support_entryleft) + ge_balance_negative_past_support_entryleftvalue = (dst_negative_past_support_entryleft) + ge_balance_positive_past_support_entryleftvalue))))))))) /\ (((exists dst_positive_code_past_support_entryright dst_positive_scale_past_support_entryright dst_negative_code_past_support_entryright dst_negative_scale_past_support_entryright dst_positive_past_support_entryright dst_negative_past_support_entryright. (((G) = (((((dst_positive_code_past_support_entryright) + (dst_positive_scale_past_support_entryright)) * S ((dst_positive_code_past_support_entryright) + (dst_positive_scale_past_support_entryright)) + ((dst_positive_scale_past_support_entryright) + (dst_positive_scale_past_support_entryright))) + (((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) * S ((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) + ((dst_negative_scale_past_support_entryright) + (dst_negative_scale_past_support_entryright)))) * S ((((dst_positive_code_past_support_entryright) + (dst_positive_scale_past_support_entryright)) * S ((dst_positive_code_past_support_entryright) + (dst_positive_scale_past_support_entryright)) + ((dst_positive_scale_past_support_entryright) + (dst_positive_scale_past_support_entryright))) + (((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) * S ((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) + ((dst_negative_scale_past_support_entryright) + (dst_negative_scale_past_support_entryright)))) + ((((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) * S ((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) + ((dst_negative_scale_past_support_entryright) + (dst_negative_scale_past_support_entryright))) + (((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) * S ((dst_negative_code_past_support_entryright) + (dst_negative_scale_past_support_entryright)) + ((dst_negative_scale_past_support_entryright) + (dst_negative_scale_past_support_entryright)))))) /\ (((((exists ff_h_pvs_past_support_entryrightpositive. ff_h_pvs_past_support_entryrightpositive + S (dst_positive_past_support_entryright) = S ((S (dc_quotient_past_support_entry)) * dst_positive_scale_past_support_entryright)) /\ exists ff_q_pvs_past_support_entryrightpositive. dst_positive_code_past_support_entryright = ff_q_pvs_past_support_entryrightpositive * S ((S (dc_quotient_past_support_entry)) * dst_positive_scale_past_support_entryright) + (dst_positive_past_support_entryright))) /\ (((((exists ff_h_pvs_past_support_entryrightnegative. ff_h_pvs_past_support_entryrightnegative + S (dst_negative_past_support_entryright) = S ((S (dc_quotient_past_support_entry)) * dst_negative_scale_past_support_entryright)) /\ exists ff_q_pvs_past_support_entryrightnegative. dst_negative_code_past_support_entryright = ff_q_pvs_past_support_entryrightnegative * S ((S (dc_quotient_past_support_entry)) * dst_negative_scale_past_support_entryright) + (dst_negative_past_support_entryright))) /\ (exists ge_balance_positive_past_support_entryrightvalue ge_balance_negative_past_support_entryrightvalue. (((((dc_right_past_support_entry) = 2 * (ge_balance_positive_past_support_entryrightvalue) /\ (ge_balance_negative_past_support_entryrightvalue) = 0) \/ exists ge_signed_half_past_support_entryrightvaluedecode. (((dc_right_past_support_entry) = 2 * ge_signed_half_past_support_entryrightvaluedecode + 1 /\ (ge_balance_positive_past_support_entryrightvalue) = 0) /\ (ge_balance_negative_past_support_entryrightvalue) = S ge_signed_half_past_support_entryrightvaluedecode))) /\ ((dst_positive_past_support_entryright) + ge_balance_negative_past_support_entryrightvalue = (dst_negative_past_support_entryright) + ge_balance_positive_past_support_entryrightvalue))))))))) /\ (exists sto_ap_past_support_entryproduct sto_an_past_support_entryproduct sto_bp_past_support_entryproduct sto_bn_past_support_entryproduct sto_cp_past_support_entryproduct sto_cn_past_support_entryproduct. (((((dc_left_past_support_entry) = 2 * (sto_ap_past_support_entryproduct) /\ (sto_an_past_support_entryproduct) = 0) \/ exists ge_signed_half_past_support_entryproductleft. (((dc_left_past_support_entry) = 2 * ge_signed_half_past_support_entryproductleft + 1 /\ (sto_ap_past_support_entryproduct) = 0) /\ (sto_an_past_support_entryproduct) = S ge_signed_half_past_support_entryproductleft))) /\ ((((((dc_right_past_support_entry) = 2 * (sto_bp_past_support_entryproduct) /\ (sto_bn_past_support_entryproduct) = 0) \/ exists ge_signed_half_past_support_entryproductright. (((dc_right_past_support_entry) = 2 * ge_signed_half_past_support_entryproductright + 1 /\ (sto_bp_past_support_entryproduct) = 0) /\ (sto_bn_past_support_entryproduct) = S ge_signed_half_past_support_entryproductright))) /\ ((((((z) = 2 * (sto_cp_past_support_entryproduct) /\ (sto_cn_past_support_entryproduct) = 0) \/ exists ge_signed_half_past_support_entryproductoutput. (((z) = 2 * ge_signed_half_past_support_entryproductoutput + 1 /\ (sto_cp_past_support_entryproduct) = 0) /\ (sto_cn_past_support_entryproduct) = S ge_signed_half_past_support_entryproductoutput))) /\ ((sto_ap_past_support_entryproduct * sto_bp_past_support_entryproduct + sto_an_past_support_entryproduct * sto_bn_past_support_entryproduct) + sto_cn_past_support_entryproduct = (sto_ap_past_support_entryproduct * sto_bn_past_support_entryproduct + sto_an_past_support_entryproduct * sto_bp_past_support_entryproduct) + sto_cp_past_support_entryproduct))))))))))))))) \/ ((((d)=0 \/ ~(exists pvs_factor_past_support_entrynondivisor. (n) = (d) * pvs_factor_past_support_entrynondivisor)) /\ ((z)=0)))) -> z=0

Complete tactic proof in conservative notation

All 26 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

26 script commands · 5 reading checkpoints · 0 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (1)
01Fix variables and assumptionsL1–8

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro F
  2. L2
    intro G
  3. L3
    intro n
  4. L4
    intro d
  5. L5
    intro z
  6. L6
    intro hn
  7. L7
    intro hnd
  8. L8
    intro he
02Use earlier factsL9–14

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L9
    specialize dirichlet_convolution_entry_omitted_value (F)
  2. L10
    specialize dirichlet_convolution_entry_omitted_value (G)
  3. L11
    specialize dirichlet_convolution_entry_omitted_value (n)
  4. L12
    specialize dirichlet_convolution_entry_omitted_value (d)
  5. L13
    specialize dirichlet_convolution_entry_omitted_value (z)
  6. L14
    apply dirichlet_convolution_entry_omitted_value
03Separate the logical casesL15–15

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L15
    right
04Fix variables and assumptionsL16–16

Work with arbitrary variables or the premises of the current implication.

  1. L16
    intro hd
05Use earlier factsL17–26

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L17
    specialize lt_not_le (n)
  2. L18
    specialize lt_not_le (d)
  3. L19
    apply lt_not_le
  4. L20
    exact hnd
  5. L21
    specialize divisor_le_nonzero (d)
  6. L22
    specialize divisor_le_nonzero (n)
  7. L23
    apply divisor_le_nonzero
  8. L24
    exact hn
  9. L25
    exact hd
  10. L26
    exact he

Library-wide reading audit

Original defined command ledger · 26 lines
  1. 0001intro F
  2. 0002intro G
  3. 0003intro n
  4. 0004intro d
  5. 0005intro z
  6. 0006intro hn
  7. 0007intro hnd
  8. 0008intro he
  9. 0009specialize dirichlet_convolution_entry_omitted_value (F)
  10. 0010specialize dirichlet_convolution_entry_omitted_value (G)
  11. 0011specialize dirichlet_convolution_entry_omitted_value (n)
  12. 0012specialize dirichlet_convolution_entry_omitted_value (d)
  13. 0013specialize dirichlet_convolution_entry_omitted_value (z)
  14. 0014apply dirichlet_convolution_entry_omitted_value
  15. 0015right
  16. 0016intro hd
  17. 0017specialize lt_not_le (n)
  18. 0018specialize lt_not_le (d)
  19. 0019apply lt_not_le
  20. 0020exact hnd
  21. 0021specialize divisor_le_nonzero (d)
  22. 0022specialize divisor_le_nonzero (n)
  23. 0023apply divisor_le_nonzero
  24. 0024exact hn
  25. 0025exact hd
  26. 0026exact he