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
∀ p. ∀ a. ∀ b. ∀ c. ∀ g. ∀ u. ∀ v. GMul(a,b,c) → GDvd(p,c) → GBezout(g,p,a,u,v) → GUnit(g) → GDvd(p,b)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 135 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 (12)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hunit
03Separate the logical casesL12–15
04Establish hinverseL16–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian unit inverse.
- L16
have hinverse : ∃ w. GUnit(w) ∧ (GMul(g,w,6) ∧ GMul(w,g,6))Definitions: GUnit(w)GMul(g,w,6)GMul(w,g,6)Original native command in the exact edition - L17
specialize gaussian_unit_inverse (g) - L18
apply gaussian_unit_inverse - L19
exact hunit
05Separate the logical casesL20–22
06Establish hPL23–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply exists.
- L23
- L24
specialize gaussian_multiply_exists (x) - L25
specialize gaussian_multiply_exists (b) - L26
apply gaussian_multiply_exists - L27
specialize gaussian_multiply_output_valid (p) - L28
specialize gaussian_multiply_output_valid (u) - L29
specialize gaussian_multiply_output_valid (x) - L30
apply gaussian_multiply_output_valid - L31
exact hbez_witness_witness_left - L32
specialize gaussian_multiply_input_right_valid (a)
07Use earlier factsL33–36
08Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
cases hP
09Establish hQL38–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply exists.
- L38
- L39
specialize gaussian_multiply_exists (x1) - L40
specialize gaussian_multiply_exists (b) - L41
apply gaussian_multiply_exists - L42
specialize gaussian_multiply_output_valid (a) - L43
specialize gaussian_multiply_output_valid (v) - L44
specialize gaussian_multiply_output_valid (x1) - L45
apply gaussian_multiply_output_valid - L46
exact hbez_witness_witness_right_left - L47
specialize gaussian_multiply_input_right_valid (a)
10Use earlier factsL48–51
11Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
cases hQ
12Establish hTL53–62
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply exists.
- L53
- L54
specialize gaussian_multiply_exists (g) - L55
specialize gaussian_multiply_exists (b) - L56
apply gaussian_multiply_exists - L57
specialize gaussian_unit_valid (g) - L58
apply gaussian_unit_valid - L59
exact hunit - L60
specialize gaussian_multiply_input_right_valid (a) - L61
specialize gaussian_multiply_input_right_valid (b) - L62
specialize gaussian_multiply_input_right_valid (c)
13Use earlier factsL63–64
14Separate the logical casesL65–65
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L65
cases hT
15Establish hcvL66–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply swap tail.
- L66
- L67
specialize gaussian_multiply_swap_tail (a) - L68
specialize gaussian_multiply_swap_tail (v) - L69
specialize gaussian_multiply_swap_tail (b) - L70
specialize gaussian_multiply_swap_tail (x1) - L71
specialize gaussian_multiply_swap_tail (c) - L72
specialize gaussian_multiply_swap_tail (x4) - L73
apply gaussian_multiply_swap_tail - L74
exact hbez_witness_witness_right_left - L75
exact hQ_witness
16Use earlier factsL76–76
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
exact hprod
17Establish htotalL77–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian common divisor add.
- L77
- L78
specialize gaussian_common_divisor_add (p) - L79
specialize gaussian_common_divisor_add (x3) - L80
specialize gaussian_common_divisor_add (x4) - L81
specialize gaussian_common_divisor_add (x5) - L82
apply gaussian_common_divisor_add - L83
specialize gaussian_divides_product_left (p) - L84
specialize gaussian_divides_product_left (x) - L85
specialize gaussian_divides_product_left (b) - L86
specialize gaussian_divides_product_left (x3)
18Use earlier factsL87–87
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L87
apply gaussian_divides_product_left
19Construct an explicit witnessL88–88
Supply the displayed value, then prove that it has the required property.
- L88
exists (u)
20Use earlier factsL89–98
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L89
exact hbez_witness_witness_left - L90
exact hP_witness - L91
specialize gaussian_divides_product_left (p) - L92
specialize gaussian_divides_product_left (c) - L93
specialize gaussian_divides_product_left (v) - L94
specialize gaussian_divides_product_left (x4) - L95
apply gaussian_divides_product_left - L96
exact hdiv - L97
exact hcv - L98
specialize gaussian_multiply_add_distribute_right (b)
21Use earlier factsL99–108
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L99
specialize gaussian_multiply_add_distribute_right (x) - L100
specialize gaussian_multiply_add_distribute_right (x1) - L101
specialize gaussian_multiply_add_distribute_right (g) - L102
specialize gaussian_multiply_add_distribute_right (x3) - L103
specialize gaussian_multiply_add_distribute_right (x4) - L104
specialize gaussian_multiply_add_distribute_right (x5) - L105
apply gaussian_multiply_add_distribute_right - L106
exact hbez_witness_witness_right_right - L107
exact hP_witness - L108
exact hQ_witness
22Use earlier factsL109–114
23Construct an explicit witnessL115–115
Supply the displayed value, then prove that it has the required property.
- L115
exists (x2)
24Use earlier factsL116–125
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L116
specialize gaussian_multiply_commutative (x2) - L117
specialize gaussian_multiply_commutative (x5) - L118
specialize gaussian_multiply_commutative (b) - L119
apply gaussian_multiply_commutative - L120
specialize gaussian_multiply_associative (x2) - L121
specialize gaussian_multiply_associative (g) - L122
specialize gaussian_multiply_associative (b) - L123
specialize gaussian_multiply_associative (6) - L124
specialize gaussian_multiply_associative (x5) - L125
specialize gaussian_multiply_associative (b)
25Use earlier factsL126–135
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L126
apply gaussian_multiply_associative - L127
exact hinverse_witness_right_right - L128
specialize gaussian_multiply_one_left (b) - L129
apply gaussian_multiply_one_left - L130
specialize gaussian_multiply_input_right_valid (a) - L131
specialize gaussian_multiply_input_right_valid (b) - L132
specialize gaussian_multiply_input_right_valid (c) - L133
apply gaussian_multiply_input_right_valid - L134
exact hprod - L135
exact hT_witness
Original defined command ledger · 135 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro c - 0005
intro g - 0006
intro u - 0007
intro v - 0008
intro hprod - 0009
intro hdiv - 0010
intro hbez - 0011
intro hunit - 0012
cases hbez - 0013
cases hbez_witness - 0014
cases hbez_witness_witness - 0015
cases hbez_witness_witness_right - 0016
have hinverse : ∃ w. GUnit(w) ∧ (GMul(g,w,6) ∧ GMul(w,g,6)) - 0017
specialize gaussian_unit_inverse (g) - 0018
apply gaussian_unit_inverse - 0019
exact hunit - 0020
cases hinverse - 0021
cases hinverse_witness - 0022
cases hinverse_witness_right - 0023
have hP : ∃ P. GMul(x,b,P) - 0024
specialize gaussian_multiply_exists (x) - 0025
specialize gaussian_multiply_exists (b) - 0026
apply gaussian_multiply_exists - 0027
specialize gaussian_multiply_output_valid (p) - 0028
specialize gaussian_multiply_output_valid (u) - 0029
specialize gaussian_multiply_output_valid (x) - 0030
apply gaussian_multiply_output_valid - 0031
exact hbez_witness_witness_left - 0032
specialize gaussian_multiply_input_right_valid (a) - 0033
specialize gaussian_multiply_input_right_valid (b) - 0034
specialize gaussian_multiply_input_right_valid (c) - 0035
apply gaussian_multiply_input_right_valid - 0036
exact hprod - 0037
cases hP - 0038
have hQ : ∃ Q. GMul(x1,b,Q) - 0039
specialize gaussian_multiply_exists (x1) - 0040
specialize gaussian_multiply_exists (b) - 0041
apply gaussian_multiply_exists - 0042
specialize gaussian_multiply_output_valid (a) - 0043
specialize gaussian_multiply_output_valid (v) - 0044
specialize gaussian_multiply_output_valid (x1) - 0045
apply gaussian_multiply_output_valid - 0046
exact hbez_witness_witness_right_left - 0047
specialize gaussian_multiply_input_right_valid (a) - 0048
specialize gaussian_multiply_input_right_valid (b) - 0049
specialize gaussian_multiply_input_right_valid (c) - 0050
apply gaussian_multiply_input_right_valid - 0051
exact hprod - 0052
cases hQ - 0053
have hT : ∃ T. GMul(g,b,T) - 0054
specialize gaussian_multiply_exists (g) - 0055
specialize gaussian_multiply_exists (b) - 0056
apply gaussian_multiply_exists - 0057
specialize gaussian_unit_valid (g) - 0058
apply gaussian_unit_valid - 0059
exact hunit - 0060
specialize gaussian_multiply_input_right_valid (a) - 0061
specialize gaussian_multiply_input_right_valid (b) - 0062
specialize gaussian_multiply_input_right_valid (c) - 0063
apply gaussian_multiply_input_right_valid - 0064
exact hprod - 0065
cases hT - 0066
have hcv : GMul(c,v,x4) - 0067
specialize gaussian_multiply_swap_tail (a) - 0068
specialize gaussian_multiply_swap_tail (v) - 0069
specialize gaussian_multiply_swap_tail (b) - 0070
specialize gaussian_multiply_swap_tail (x1) - 0071
specialize gaussian_multiply_swap_tail (c) - 0072
specialize gaussian_multiply_swap_tail (x4) - 0073
apply gaussian_multiply_swap_tail - 0074
exact hbez_witness_witness_right_left - 0075
exact hQ_witness - 0076
exact hprod - 0077
have htotal : GDvd(p,x5) - 0078
specialize gaussian_common_divisor_add (p) - 0079
specialize gaussian_common_divisor_add (x3) - 0080
specialize gaussian_common_divisor_add (x4) - 0081
specialize gaussian_common_divisor_add (x5) - 0082
apply gaussian_common_divisor_add - 0083
specialize gaussian_divides_product_left (p) - 0084
specialize gaussian_divides_product_left (x) - 0085
specialize gaussian_divides_product_left (b) - 0086
specialize gaussian_divides_product_left (x3) - 0087
apply gaussian_divides_product_left - 0088
exists (u) - 0089
exact hbez_witness_witness_left - 0090
exact hP_witness - 0091
specialize gaussian_divides_product_left (p) - 0092
specialize gaussian_divides_product_left (c) - 0093
specialize gaussian_divides_product_left (v) - 0094
specialize gaussian_divides_product_left (x4) - 0095
apply gaussian_divides_product_left - 0096
exact hdiv - 0097
exact hcv - 0098
specialize gaussian_multiply_add_distribute_right (b) - 0099
specialize gaussian_multiply_add_distribute_right (x) - 0100
specialize gaussian_multiply_add_distribute_right (x1) - 0101
specialize gaussian_multiply_add_distribute_right (g) - 0102
specialize gaussian_multiply_add_distribute_right (x3) - 0103
specialize gaussian_multiply_add_distribute_right (x4) - 0104
specialize gaussian_multiply_add_distribute_right (x5) - 0105
apply gaussian_multiply_add_distribute_right - 0106
exact hbez_witness_witness_right_right - 0107
exact hP_witness - 0108
exact hQ_witness - 0109
exact hT_witness - 0110
specialize gaussian_divides_transitive (p) - 0111
specialize gaussian_divides_transitive (x5) - 0112
specialize gaussian_divides_transitive (b) - 0113
apply gaussian_divides_transitive - 0114
exact htotal - 0115
exists (x2) - 0116
specialize gaussian_multiply_commutative (x2) - 0117
specialize gaussian_multiply_commutative (x5) - 0118
specialize gaussian_multiply_commutative (b) - 0119
apply gaussian_multiply_commutative - 0120
specialize gaussian_multiply_associative (x2) - 0121
specialize gaussian_multiply_associative (g) - 0122
specialize gaussian_multiply_associative (b) - 0123
specialize gaussian_multiply_associative (6) - 0124
specialize gaussian_multiply_associative (x5) - 0125
specialize gaussian_multiply_associative (b) - 0126
apply gaussian_multiply_associative - 0127
exact hinverse_witness_right_right - 0128
specialize gaussian_multiply_one_left (b) - 0129
apply gaussian_multiply_one_left - 0130
specialize gaussian_multiply_input_right_valid (a) - 0131
specialize gaussian_multiply_input_right_valid (b) - 0132
specialize gaussian_multiply_input_right_valid (c) - 0133
apply gaussian_multiply_input_right_valid - 0134
exact hprod - 0135
exact hT_witness