Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Every grid, slice, row sum and intermediate table is constructed. Retained cells have witnessed n=(a*e)*c and value F(a)*(H(e)*G(c)). The flat endpoint is unused. Table associativity includes N=0 and compares only positive values, not encodings. Full G009 remains broader.
Exact theorem in conservative defined notation
∀ N. ∀ F. ∀ G. ∀ H. ∀ U. ∀ n. ∀ a. ∀ V. ∀ z. ArithTable(N,F) → DirichletTable(N,H,G,U) → ¬n = 0 → Le(n,N) → Le(a,n) → DirichletFactorRow(F,G,H,n,a,V) → SignedPrefixSum(V,S n,z) → DirichletEntry(F,U,n,a,z)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 158 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
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.
Named ingredients (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–16
03Establish haL17–20
04Separate the logical casesL21–24
05Use earlier factsL25–34
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L25
exact ha_left - L26
specialize dirichlet_factor_row_zero_sum (F) - L27
specialize dirichlet_factor_row_zero_sum (G) - L28
specialize dirichlet_factor_row_zero_sum (H) - L29
specialize dirichlet_factor_row_zero_sum (n) - L30
specialize dirichlet_factor_row_zero_sum (a) - L31
specialize dirichlet_factor_row_zero_sum (V) - L32
specialize dirichlet_factor_row_zero_sum (z) - L33
apply dirichlet_factor_row_zero_sum - L34
exact hr
06Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
left
07Use earlier factsL36–37
08Establish hdL38–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply multiple decidable nonzero.
09Separate the logical casesL43–44
10Establish hfL45–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply signed table lookup any.
- L45
have hf : ∃ u. ArithAt(F,a,u)Definitions: ArithAt(F,a,u)Original native command in the exact edition - L46
specialize signed_table_lookup_any (N) - L47
specialize signed_table_lookup_any (F) - L48
specialize signed_table_lookup_any (a) - L49
apply signed_table_lookup_any - L50
exact hF
11Separate the logical casesL51–51
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L51
cases hf
12Establish hiL52–61
Establish this local claim before using it. It is not an additional assumption.
- L52
have hi : ∃ v. DirichletSum(H,G,x,v) ∧ SignedMul(x1,v,z)Definitions: DirichletSum(H,G,x,v)SignedMul(x1,v,z)Original native command in the exact edition - L53
specialize dirichlet_factor_row_sum_product (F) - L54
specialize dirichlet_factor_row_sum_product (G) - L55
specialize dirichlet_factor_row_sum_product (H) - L56
specialize dirichlet_factor_row_sum_product (n) - L57
specialize dirichlet_factor_row_sum_product (a) - L58
specialize dirichlet_factor_row_sum_product (x) - L59
specialize dirichlet_factor_row_sum_product (x1) - L60
specialize dirichlet_factor_row_sum_product (V) - L61
specialize dirichlet_factor_row_sum_product (z)
13Use earlier factsL62–66
14Separate the logical casesL67–69
15Use earlier factsL70–74
16Separate the logical casesL75–77
17Use earlier factsL78–84
18Separate the logical casesL85–86
19Establish htL87–96
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dirichlet convolution table lookup.
- L87
have ht : ∃ v. ArithAt(U,x,v) ∧ DirichletSum(H,G,x,v)Definitions: ArithAt(U,x,v)DirichletSum(H,G,x,v)Original native command in the exact edition - L88
specialize dirichlet_convolution_table_lookup (N) - L89
specialize dirichlet_convolution_table_lookup (H) - L90
specialize dirichlet_convolution_table_lookup (G) - L91
specialize dirichlet_convolution_table_lookup (U) - L92
specialize dirichlet_convolution_table_lookup (x) - L93
apply dirichlet_convolution_table_lookup - L94
exact hU - L95
intro hx0 - L96
specialize factor_nonzero_right (n)
20Use earlier factsL97–106
Instantiate or apply named facts and discharge the corresponding proof obligations.
21Use earlier factsL107–110
22Construct an explicit witnessL111–111
Supply the displayed value, then prove that it has the required property.
- L111
exists a
23Calculate and transport equalitiesL112–112
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L112
trans a*x
24Use earlier factsL113–115
25Separate the logical casesL116–117
26Establish hvalueL118–127
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply dirichlet convolution sum functional.
- L118
have hvalue : x2=x3 - L119
specialize dirichlet_convolution_sum_functional (H) - L120
specialize dirichlet_convolution_sum_functional (G) - L121
specialize dirichlet_convolution_sum_functional (x) - L122
specialize dirichlet_convolution_sum_functional (x2) - L123
specialize dirichlet_convolution_sum_functional (x3) - L124
apply dirichlet_convolution_sum_functional - L125
exact hi_witness_left - L126
exact ht_witness_right - L127
rewrite hvalue at hi_witness_right
27Calculate and transport equalitiesL128–128
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L128
rewrite hvalue at hi_witness_right
28Use earlier factsL129–138
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L129
specialize dirichlet_convolution_entry_from_quotient (F) - L130
specialize dirichlet_convolution_entry_from_quotient (U) - L131
specialize dirichlet_convolution_entry_from_quotient (n) - L132
specialize dirichlet_convolution_entry_from_quotient (a) - L133
specialize dirichlet_convolution_entry_from_quotient (x) - L134
specialize dirichlet_convolution_entry_from_quotient (x1) - L135
specialize dirichlet_convolution_entry_from_quotient (x3) - L136
specialize dirichlet_convolution_entry_from_quotient (z) - L137
apply dirichlet_convolution_entry_from_quotient - L138
exact ha_right
29Use earlier factsL139–142
30Separate the logical casesL143–145
31Use earlier factsL146–155
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L146
exact hd_right - L147
specialize dirichlet_factor_row_zero_sum (F) - L148
specialize dirichlet_factor_row_zero_sum (G) - L149
specialize dirichlet_factor_row_zero_sum (H) - L150
specialize dirichlet_factor_row_zero_sum (n) - L151
specialize dirichlet_factor_row_zero_sum (a) - L152
specialize dirichlet_factor_row_zero_sum (V) - L153
specialize dirichlet_factor_row_zero_sum (z) - L154
apply dirichlet_factor_row_zero_sum - L155
exact hr
32Separate the logical casesL156–156
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L156
right
Original defined command ledger · 158 lines
- 0001
intro N - 0002
intro F - 0003
intro G - 0004
intro H - 0005
intro U - 0006
intro n - 0007
intro a - 0008
intro V - 0009
intro z - 0010
intro hF - 0011
intro hU - 0012
intro hn - 0013
intro hnN - 0014
intro haN - 0015
intro hr - 0016
intro hz - 0017
have ha : a=0 \/ ~(a=0) - 0018
specialize eq_decidable (a) - 0019
specialize eq_decidable (0) - 0020
apply eq_decidable - 0021
cases ha - 0022
right - 0023
split - 0024
left - 0025
exact ha_left - 0026
specialize dirichlet_factor_row_zero_sum (F) - 0027
specialize dirichlet_factor_row_zero_sum (G) - 0028
specialize dirichlet_factor_row_zero_sum (H) - 0029
specialize dirichlet_factor_row_zero_sum (n) - 0030
specialize dirichlet_factor_row_zero_sum (a) - 0031
specialize dirichlet_factor_row_zero_sum (V) - 0032
specialize dirichlet_factor_row_zero_sum (z) - 0033
apply dirichlet_factor_row_zero_sum - 0034
exact hr - 0035
left - 0036
exact ha_left - 0037
exact hz - 0038
have hd : Dvd(a,n) ∨ ¬Dvd(a,n) - 0039
specialize multiple_decidable_nonzero (a) - 0040
specialize multiple_decidable_nonzero (n) - 0041
apply multiple_decidable_nonzero - 0042
exact ha_right - 0043
cases hd - 0044
cases hd_left - 0045
have hf : ∃ u. ArithAt(F,a,u) - 0046
specialize signed_table_lookup_any (N) - 0047
specialize signed_table_lookup_any (F) - 0048
specialize signed_table_lookup_any (a) - 0049
apply signed_table_lookup_any - 0050
exact hF - 0051
cases hf - 0052
have hi : ∃ v. DirichletSum(H,G,x,v) ∧ SignedMul(x1,v,z) - 0053
specialize dirichlet_factor_row_sum_product (F) - 0054
specialize dirichlet_factor_row_sum_product (G) - 0055
specialize dirichlet_factor_row_sum_product (H) - 0056
specialize dirichlet_factor_row_sum_product (n) - 0057
specialize dirichlet_factor_row_sum_product (a) - 0058
specialize dirichlet_factor_row_sum_product (x) - 0059
specialize dirichlet_factor_row_sum_product (x1) - 0060
specialize dirichlet_factor_row_sum_product (V) - 0061
specialize dirichlet_factor_row_sum_product (z) - 0062
apply dirichlet_factor_row_sum_product - 0063
specialize signed_table_domain_resize (N) - 0064
specialize signed_table_domain_resize (0) - 0065
specialize signed_table_domain_resize (H) - 0066
apply signed_table_domain_resize - 0067
cases hU - 0068
cases hU_right - 0069
cases hU_right_right - 0070
exact hU_left - 0071
specialize signed_table_domain_resize (N) - 0072
specialize signed_table_domain_resize (0) - 0073
specialize signed_table_domain_resize (G) - 0074
apply signed_table_domain_resize - 0075
cases hU - 0076
cases hU_right - 0077
cases hU_right_right - 0078
exact hU_right_left - 0079
exact hn - 0080
exact ha_right - 0081
exact hd_left_witness - 0082
exact hf_witness - 0083
exact hr - 0084
exact hz - 0085
cases hi - 0086
cases hi_witness - 0087
have ht : ∃ v. ArithAt(U,x,v) ∧ DirichletSum(H,G,x,v) - 0088
specialize dirichlet_convolution_table_lookup (N) - 0089
specialize dirichlet_convolution_table_lookup (H) - 0090
specialize dirichlet_convolution_table_lookup (G) - 0091
specialize dirichlet_convolution_table_lookup (U) - 0092
specialize dirichlet_convolution_table_lookup (x) - 0093
apply dirichlet_convolution_table_lookup - 0094
exact hU - 0095
intro hx0 - 0096
specialize factor_nonzero_right (n) - 0097
specialize factor_nonzero_right (a) - 0098
specialize factor_nonzero_right (x) - 0099
apply factor_nonzero_right - 0100
exact hn - 0101
exact hd_left_witness - 0102
exact hx0 - 0103
specialize le_trans (x) - 0104
specialize le_trans (n) - 0105
specialize le_trans (N) - 0106
apply le_trans - 0107
specialize divisor_le_nonzero (x) - 0108
specialize divisor_le_nonzero (n) - 0109
apply divisor_le_nonzero - 0110
exact hn - 0111
exists a - 0112
trans a*x - 0113
exact hd_left_witness - 0114
apply mul_comm - 0115
exact hnN - 0116
cases ht - 0117
cases ht_witness - 0118
have hvalue : x2=x3 - 0119
specialize dirichlet_convolution_sum_functional (H) - 0120
specialize dirichlet_convolution_sum_functional (G) - 0121
specialize dirichlet_convolution_sum_functional (x) - 0122
specialize dirichlet_convolution_sum_functional (x2) - 0123
specialize dirichlet_convolution_sum_functional (x3) - 0124
apply dirichlet_convolution_sum_functional - 0125
exact hi_witness_left - 0126
exact ht_witness_right - 0127
rewrite hvalue at hi_witness_right - 0128
rewrite hvalue at hi_witness_right - 0129
specialize dirichlet_convolution_entry_from_quotient (F) - 0130
specialize dirichlet_convolution_entry_from_quotient (U) - 0131
specialize dirichlet_convolution_entry_from_quotient (n) - 0132
specialize dirichlet_convolution_entry_from_quotient (a) - 0133
specialize dirichlet_convolution_entry_from_quotient (x) - 0134
specialize dirichlet_convolution_entry_from_quotient (x1) - 0135
specialize dirichlet_convolution_entry_from_quotient (x3) - 0136
specialize dirichlet_convolution_entry_from_quotient (z) - 0137
apply dirichlet_convolution_entry_from_quotient - 0138
exact ha_right - 0139
exact hd_left_witness - 0140
exact hf_witness - 0141
exact ht_witness_left - 0142
exact hi_witness_right - 0143
right - 0144
split - 0145
right - 0146
exact hd_right - 0147
specialize dirichlet_factor_row_zero_sum (F) - 0148
specialize dirichlet_factor_row_zero_sum (G) - 0149
specialize dirichlet_factor_row_zero_sum (H) - 0150
specialize dirichlet_factor_row_zero_sum (n) - 0151
specialize dirichlet_factor_row_zero_sum (a) - 0152
specialize dirichlet_factor_row_zero_sum (V) - 0153
specialize dirichlet_factor_row_zero_sum (z) - 0154
apply dirichlet_factor_row_zero_sum - 0155
exact hr - 0156
right - 0157
exact hd_right - 0158
exact hz