Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
Inputs are genuine canonical signed-pair codes, not arbitrary naturals. Products start at the actual Gaussian identity, whose code is six. The factor list uses the proved prime-divisor property; irreducibility alone is not silently renamed primality. Uniqueness supplies equal lengths, a bounded bijection, and an actual unit at each match, including repeated factors. Units have empty factorizations and zero is excluded. Sorted primary representatives, Gaussian prime classification, and Eisenstein factorization are separate targets.
Exact theorem in conservative defined notation
∀ k. ∀ b. ∀ c. ∀ d. ∀ e. ∀ i. ∀ p. ∀ q. ∀ P. ∀ Q. ∀ T. Lt(i,k) → BetaAt(b,c,i,p) → BetaAt(d,e,i,q) → (∀ x. ∀ y. Lt(x,k) → ¬x = i → BetaAt(b,c,x,y) → BetaAt(d,e,x,y)) → GProduct(b,c,k,P) → GProduct(d,e,k,Q) → GMul(Q,p,T) → GMul(P,q,T)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 241 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 (8)
01Induction on kL1–10
02Fix variables and assumptionsL11–18
03Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
exfalso
04Use earlier factsL20–22
05Fix variables and assumptionsL23–32
06Fix variables and assumptionsL33–39
07Establish hcasesL40–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
08Establish holdL45–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian product successor decompose.
- L45
have hold : ∃ a. ∃ R. BetaAt(b,c,k,a) ∧ (GProduct(b,c,k,R) ∧ GMul(R,a,P))Definitions: BetaAt(b,c,k,a)GProduct(b,c,k,R)GMul(R,a,P)Original native command in the exact edition - L46
specialize gaussian_product_successor_decompose (b) - L47
specialize gaussian_product_successor_decompose (c) - L48
specialize gaussian_product_successor_decompose (k) - L49
specialize gaussian_product_successor_decompose (P) - L50
apply gaussian_product_successor_decompose - L51
exact hP
09Establish hnewL52–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian product successor decompose.
- L52
have hnew : ∃ a. ∃ R. BetaAt(d,e,k,a) ∧ (GProduct(d,e,k,R) ∧ GMul(R,a,Q))Definitions: BetaAt(d,e,k,a)GProduct(d,e,k,R)GMul(R,a,Q)Original native command in the exact edition - L53
specialize gaussian_product_successor_decompose (d) - L54
specialize gaussian_product_successor_decompose (e) - L55
specialize gaussian_product_successor_decompose (k) - L56
specialize gaussian_product_successor_decompose (Q) - L57
apply gaussian_product_successor_decompose - L58
exact hQ
10Separate the logical casesL59–67
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
11Establish hlastoldL68–77
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L68
have hlastold : x=p - L69
specialize beta_at_unique (b) - L70
specialize beta_at_unique (c) - L71
specialize beta_at_unique (k) - L72
specialize beta_at_unique (x) - L73
specialize beta_at_unique (p) - L74
apply beta_at_unique - L75
exact hold_witness_witness_left - L76
specialize gaussian_product_beta_index_transport (b) - L77
specialize gaussian_product_beta_index_transport (c)
12Use earlier factsL78–83
Instantiate or apply named facts and discharge the corresponding proof obligations.
13Establish hlastnewL84–93
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L84
have hlastnew : x2=q - L85
specialize beta_at_unique (d) - L86
specialize beta_at_unique (e) - L87
specialize beta_at_unique (k) - L88
specialize beta_at_unique (x2) - L89
specialize beta_at_unique (q) - L90
apply beta_at_unique - L91
exact hnew_witness_witness_left - L92
specialize gaussian_product_beta_index_transport (d) - L93
specialize gaussian_product_beta_index_transport (e)
14Use earlier factsL94–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
15Establish hprefixL100–109
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian product prefix recode.
- L100
have hprefix : GProduct(d,e,k,x1)Definitions: GProduct(d,e,k,x1)Original native command in the exact edition - L101
specialize gaussian_product_prefix_recode (b) - L102
specialize gaussian_product_prefix_recode (c) - L103
specialize gaussian_product_prefix_recode (d) - L104
specialize gaussian_product_prefix_recode (e) - L105
specialize gaussian_product_prefix_recode (k) - L106
specialize gaussian_product_prefix_recode (x1) - L107
apply gaussian_product_prefix_recode - L108
exact hold_witness_witness_right_left - L109
intro j
16Fix variables and assumptionsL110–112
17Use earlier factsL113–119
18Fix variables and assumptionsL120–120
Work with arbitrary variables or the premises of the current implication.
- L120
intro heq
19Use earlier factsL121–122
20Calculate and transport equalitiesL123–124
21Use earlier factsL125–126
22Establish hprefixeqL127–136
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian product functional.
- L127
have hprefixeq : x1=x3 - L128
specialize gaussian_product_functional (k) - L129
specialize gaussian_product_functional (d) - L130
specialize gaussian_product_functional (e) - L131
specialize gaussian_product_functional (x1) - L132
specialize gaussian_product_functional (x3) - L133
apply gaussian_product_functional - L134
exact hprefix - L135
exact hnew_witness_witness_right_left - L136
rewrite hlastold at hold_witness_witness_right_right
23Calculate and transport equalitiesL137–138
24Use earlier factsL139–148
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L139
specialize gaussian_multiply_swap_tail (x3) - L140
specialize gaussian_multiply_swap_tail (q) - L141
specialize gaussian_multiply_swap_tail (p) - L142
specialize gaussian_multiply_swap_tail (Q) - L143
specialize gaussian_multiply_swap_tail (P) - L144
specialize gaussian_multiply_swap_tail (T) - L145
apply gaussian_multiply_swap_tail - L146
exact hnew_witness_witness_right_right - L147
exact hmultiply - L148
exact hold_witness_witness_right_right
25Establish hkiL149–154
26Establish hlastL155–162
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hpreserve.
- L155
have hlast : BetaAt(d,e,k,x)Definitions: BetaAt(d,e,k,x)Original native command in the exact edition - L156
specialize hpreserve (k) - L157
specialize hpreserve (x) - L158
apply hpreserve - L159
specialize le_refl (S k) - L160
apply le_refl - L161
exact hki - L162
exact hold_witness_witness_left
27Establish hlastmatchL163–172
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at unique.
- L163
have hlastmatch : x2=x - L164
specialize beta_at_unique (d) - L165
specialize beta_at_unique (e) - L166
specialize beta_at_unique (k) - L167
specialize beta_at_unique (x2) - L168
specialize beta_at_unique (x) - L169
apply beta_at_unique - L170
exact hnew_witness_witness_left - L171
exact hlast - L172
rewrite hlastmatch at hnew_witness_witness_right_right
28Establish hRL173–182
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply exists.
- L173
- L174
specialize gaussian_multiply_exists (x3) - L175
specialize gaussian_multiply_exists (p) - L176
apply gaussian_multiply_exists - L177
specialize gaussian_product_result_valid (k) - L178
specialize gaussian_product_result_valid (d) - L179
specialize gaussian_product_result_valid (e) - L180
specialize gaussian_product_result_valid (x3) - L181
apply gaussian_product_result_valid - L182
exact hnew_witness_witness_right_left
29Use earlier factsL183–187
Instantiate or apply named facts and discharge the corresponding proof obligations.
30Separate the logical casesL188–188
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L188
cases hR
31Establish hmiddleL189–198
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply swap tail.
- L189
- L190
specialize gaussian_multiply_swap_tail (x3) - L191
specialize gaussian_multiply_swap_tail (x) - L192
specialize gaussian_multiply_swap_tail (p) - L193
specialize gaussian_multiply_swap_tail (Q) - L194
specialize gaussian_multiply_swap_tail (x4) - L195
specialize gaussian_multiply_swap_tail (T) - L196
apply gaussian_multiply_swap_tail - L197
exact hnew_witness_witness_right_right - L198
exact hmultiply
32Use earlier factsL199–199
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L199
exact hR_witness
33Establish hbalanceL200–209
Establish this local claim before using it. It is not an additional assumption.
34Use earlier factsL210–214
35Fix variables and assumptionsL215–219
36Use earlier factsL220–229
Instantiate or apply named facts and discharge the corresponding proof obligations.
37Use earlier factsL230–239
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L230
exact hnew_witness_witness_right_left - L231
exact hR_witness - L232
specialize gaussian_multiply_swap_tail (x1) - L233
specialize gaussian_multiply_swap_tail (q) - L234
specialize gaussian_multiply_swap_tail (x) - L235
specialize gaussian_multiply_swap_tail (x4) - L236
specialize gaussian_multiply_swap_tail (P) - L237
specialize gaussian_multiply_swap_tail (T) - L238
apply gaussian_multiply_swap_tail - L239
exact hbalance
Original defined command ledger · 241 lines
- 0001
induction k - 0002
intro b - 0003
intro c - 0004
intro d - 0005
intro e - 0006
intro i - 0007
intro p - 0008
intro q - 0009
intro P - 0010
intro Q - 0011
intro T - 0012
intro hi - 0013
intro hp - 0014
intro hq - 0015
intro hpreserve - 0016
intro hP - 0017
intro hQ - 0018
intro hmultiply - 0019
exfalso - 0020
specialize gaussian_search_no_index_below_zero (i) - 0021
apply gaussian_search_no_index_below_zero - 0022
exact hi - 0023
intro b - 0024
intro c - 0025
intro d - 0026
intro e - 0027
intro i - 0028
intro p - 0029
intro q - 0030
intro P - 0031
intro Q - 0032
intro T - 0033
intro hi - 0034
intro hp - 0035
intro hq - 0036
intro hpreserve - 0037
intro hP - 0038
intro hQ - 0039
intro hmultiply - 0040
have hcases : i = k ∨ Lt(i,k) - 0041
specialize finite_lt_succ_eq_or_lt (k) - 0042
specialize finite_lt_succ_eq_or_lt (i) - 0043
apply finite_lt_succ_eq_or_lt - 0044
exact hi - 0045
have hold : ∃ a. ∃ R. BetaAt(b,c,k,a) ∧ (GProduct(b,c,k,R) ∧ GMul(R,a,P)) - 0046
specialize gaussian_product_successor_decompose (b) - 0047
specialize gaussian_product_successor_decompose (c) - 0048
specialize gaussian_product_successor_decompose (k) - 0049
specialize gaussian_product_successor_decompose (P) - 0050
apply gaussian_product_successor_decompose - 0051
exact hP - 0052
have hnew : ∃ a. ∃ R. BetaAt(d,e,k,a) ∧ (GProduct(d,e,k,R) ∧ GMul(R,a,Q)) - 0053
specialize gaussian_product_successor_decompose (d) - 0054
specialize gaussian_product_successor_decompose (e) - 0055
specialize gaussian_product_successor_decompose (k) - 0056
specialize gaussian_product_successor_decompose (Q) - 0057
apply gaussian_product_successor_decompose - 0058
exact hQ - 0059
cases hold - 0060
cases hold_witness - 0061
cases hold_witness_witness - 0062
cases hold_witness_witness_right - 0063
cases hnew - 0064
cases hnew_witness - 0065
cases hnew_witness_witness - 0066
cases hnew_witness_witness_right - 0067
cases hcases - 0068
have hlastold : x=p - 0069
specialize beta_at_unique (b) - 0070
specialize beta_at_unique (c) - 0071
specialize beta_at_unique (k) - 0072
specialize beta_at_unique (x) - 0073
specialize beta_at_unique (p) - 0074
apply beta_at_unique - 0075
exact hold_witness_witness_left - 0076
specialize gaussian_product_beta_index_transport (b) - 0077
specialize gaussian_product_beta_index_transport (c) - 0078
specialize gaussian_product_beta_index_transport (i) - 0079
specialize gaussian_product_beta_index_transport (k) - 0080
specialize gaussian_product_beta_index_transport (p) - 0081
apply gaussian_product_beta_index_transport - 0082
exact hcases_left - 0083
exact hp - 0084
have hlastnew : x2=q - 0085
specialize beta_at_unique (d) - 0086
specialize beta_at_unique (e) - 0087
specialize beta_at_unique (k) - 0088
specialize beta_at_unique (x2) - 0089
specialize beta_at_unique (q) - 0090
apply beta_at_unique - 0091
exact hnew_witness_witness_left - 0092
specialize gaussian_product_beta_index_transport (d) - 0093
specialize gaussian_product_beta_index_transport (e) - 0094
specialize gaussian_product_beta_index_transport (i) - 0095
specialize gaussian_product_beta_index_transport (k) - 0096
specialize gaussian_product_beta_index_transport (q) - 0097
apply gaussian_product_beta_index_transport - 0098
exact hcases_left - 0099
exact hq - 0100
have hprefix : GProduct(d,e,k,x1) - 0101
specialize gaussian_product_prefix_recode (b) - 0102
specialize gaussian_product_prefix_recode (c) - 0103
specialize gaussian_product_prefix_recode (d) - 0104
specialize gaussian_product_prefix_recode (e) - 0105
specialize gaussian_product_prefix_recode (k) - 0106
specialize gaussian_product_prefix_recode (x1) - 0107
apply gaussian_product_prefix_recode - 0108
exact hold_witness_witness_right_left - 0109
intro j - 0110
intro a - 0111
intro hj - 0112
intro hentry - 0113
specialize hpreserve (j) - 0114
specialize hpreserve (a) - 0115
apply hpreserve - 0116
specialize le_succ (S j) - 0117
specialize le_succ (k) - 0118
apply le_succ - 0119
exact hj - 0120
intro heq - 0121
specialize lt_irrefl_expanded (k) - 0122
apply lt_irrefl_expanded - 0123
rewrite heq at hj - 0124
rewrite hcases_left at hj - 0125
exact hj - 0126
exact hentry - 0127
have hprefixeq : x1=x3 - 0128
specialize gaussian_product_functional (k) - 0129
specialize gaussian_product_functional (d) - 0130
specialize gaussian_product_functional (e) - 0131
specialize gaussian_product_functional (x1) - 0132
specialize gaussian_product_functional (x3) - 0133
apply gaussian_product_functional - 0134
exact hprefix - 0135
exact hnew_witness_witness_right_left - 0136
rewrite hlastold at hold_witness_witness_right_right - 0137
rewrite hprefixeq at hold_witness_witness_right_right - 0138
rewrite hlastnew at hnew_witness_witness_right_right - 0139
specialize gaussian_multiply_swap_tail (x3) - 0140
specialize gaussian_multiply_swap_tail (q) - 0141
specialize gaussian_multiply_swap_tail (p) - 0142
specialize gaussian_multiply_swap_tail (Q) - 0143
specialize gaussian_multiply_swap_tail (P) - 0144
specialize gaussian_multiply_swap_tail (T) - 0145
apply gaussian_multiply_swap_tail - 0146
exact hnew_witness_witness_right_right - 0147
exact hmultiply - 0148
exact hold_witness_witness_right_right - 0149
have hki : ~(k=i) - 0150
intro heq - 0151
specialize lt_irrefl_expanded (k) - 0152
apply lt_irrefl_expanded - 0153
rewrite <- heq at hcases_right - 0154
exact hcases_right - 0155
have hlast : BetaAt(d,e,k,x) - 0156
specialize hpreserve (k) - 0157
specialize hpreserve (x) - 0158
apply hpreserve - 0159
specialize le_refl (S k) - 0160
apply le_refl - 0161
exact hki - 0162
exact hold_witness_witness_left - 0163
have hlastmatch : x2=x - 0164
specialize beta_at_unique (d) - 0165
specialize beta_at_unique (e) - 0166
specialize beta_at_unique (k) - 0167
specialize beta_at_unique (x2) - 0168
specialize beta_at_unique (x) - 0169
apply beta_at_unique - 0170
exact hnew_witness_witness_left - 0171
exact hlast - 0172
rewrite hlastmatch at hnew_witness_witness_right_right - 0173
have hR : ∃ R. GMul(x3,p,R) - 0174
specialize gaussian_multiply_exists (x3) - 0175
specialize gaussian_multiply_exists (p) - 0176
apply gaussian_multiply_exists - 0177
specialize gaussian_product_result_valid (k) - 0178
specialize gaussian_product_result_valid (d) - 0179
specialize gaussian_product_result_valid (e) - 0180
specialize gaussian_product_result_valid (x3) - 0181
apply gaussian_product_result_valid - 0182
exact hnew_witness_witness_right_left - 0183
specialize gaussian_multiply_input_right_valid (Q) - 0184
specialize gaussian_multiply_input_right_valid (p) - 0185
specialize gaussian_multiply_input_right_valid (T) - 0186
apply gaussian_multiply_input_right_valid - 0187
exact hmultiply - 0188
cases hR - 0189
have hmiddle : GMul(x4,x,T) - 0190
specialize gaussian_multiply_swap_tail (x3) - 0191
specialize gaussian_multiply_swap_tail (x) - 0192
specialize gaussian_multiply_swap_tail (p) - 0193
specialize gaussian_multiply_swap_tail (Q) - 0194
specialize gaussian_multiply_swap_tail (x4) - 0195
specialize gaussian_multiply_swap_tail (T) - 0196
apply gaussian_multiply_swap_tail - 0197
exact hnew_witness_witness_right_right - 0198
exact hmultiply - 0199
exact hR_witness - 0200
have hbalance : GMul(x1,q,x4) - 0201
specialize IH (b) - 0202
specialize IH (c) - 0203
specialize IH (d) - 0204
specialize IH (e) - 0205
specialize IH (i) - 0206
specialize IH (p) - 0207
specialize IH (q) - 0208
specialize IH (x1) - 0209
specialize IH (x3) - 0210
specialize IH (x4) - 0211
apply IH - 0212
exact hcases_right - 0213
exact hp - 0214
exact hq - 0215
intro j - 0216
intro a - 0217
intro hj - 0218
intro hne - 0219
intro hentry - 0220
specialize hpreserve (j) - 0221
specialize hpreserve (a) - 0222
apply hpreserve - 0223
specialize le_succ (S j) - 0224
specialize le_succ (k) - 0225
apply le_succ - 0226
exact hj - 0227
exact hne - 0228
exact hentry - 0229
exact hold_witness_witness_right_left - 0230
exact hnew_witness_witness_right_left - 0231
exact hR_witness - 0232
specialize gaussian_multiply_swap_tail (x1) - 0233
specialize gaussian_multiply_swap_tail (q) - 0234
specialize gaussian_multiply_swap_tail (x) - 0235
specialize gaussian_multiply_swap_tail (x4) - 0236
specialize gaussian_multiply_swap_tail (P) - 0237
specialize gaussian_multiply_swap_tail (T) - 0238
apply gaussian_multiply_swap_tail - 0239
exact hbalance - 0240
exact hmiddle - 0241
exact hold_witness_witness_right_right