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
∀ a. ∀ b. GDvd(a,b) → GDvd(b,a) → GAssociate(a,b)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 80 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 (11)
01Fix variables and assumptionsL1–4
02Establish haL5–8
03Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
cases ha
04Establish hbL10–14
05Construct an explicit witnessL15–15
Supply the displayed value, then prove that it has the required property.
- L15
exists (6)
06Separate the logical casesL16–16
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L16
split
07Use earlier factsL17–17
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L17
exact gaussian_one_unit
08Calculate and transport equalitiesL18–19
09Use earlier factsL20–22
10Separate the logical casesL23–24
11Establish hqL25–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply exists.
- L25
- L26
specialize gaussian_multiply_exists (x) - L27
specialize gaussian_multiply_exists (x1) - L28
apply gaussian_multiply_exists - L29
specialize gaussian_multiply_input_right_valid (a) - L30
specialize gaussian_multiply_input_right_valid (x) - L31
specialize gaussian_multiply_input_right_valid (b) - L32
apply gaussian_multiply_input_right_valid - L33
exact hA_witness - L34
specialize gaussian_multiply_input_right_valid (b)
12Use earlier factsL35–38
13Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
cases hq
14Establish hselfL40–49
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply associative.
- L40
- L41
specialize gaussian_multiply_associative (a) - L42
specialize gaussian_multiply_associative (x) - L43
specialize gaussian_multiply_associative (x1) - L44
specialize gaussian_multiply_associative (b) - L45
specialize gaussian_multiply_associative (x2) - L46
specialize gaussian_multiply_associative (a) - L47
apply gaussian_multiply_associative - L48
exact hA_witness - L49
exact hB_witness
15Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact hq_witness
16Establish heqL51–60
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian multiply cancel left.
- L51
have heq : x2=6 - L52
specialize gaussian_multiply_cancel_left (a) - L53
specialize gaussian_multiply_cancel_left (x2) - L54
specialize gaussian_multiply_cancel_left (6) - L55
specialize gaussian_multiply_cancel_left (a) - L56
apply gaussian_multiply_cancel_left - L57
exact ha_right - L58
exact hself - L59
specialize gaussian_multiply_one_right (a) - L60
apply gaussian_multiply_one_right
17Use earlier factsL61–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
18Construct an explicit witnessL66–66
Supply the displayed value, then prove that it has the required property.
- L66
exists (x)
19Separate the logical casesL67–67
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L67
split
20Construct an explicit witnessL68–68
Supply the displayed value, then prove that it has the required property.
- L68
exists (x1)
21Use earlier factsL69–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L69
specialize gaussian_multiply_output_transport (x) - L70
specialize gaussian_multiply_output_transport (x1) - L71
specialize gaussian_multiply_output_transport (x2) - L72
specialize gaussian_multiply_output_transport (6) - L73
apply gaussian_multiply_output_transport - L74
exact heq - L75
exact hq_witness - L76
specialize gaussian_multiply_commutative (a) - L77
specialize gaussian_multiply_commutative (x) - L78
specialize gaussian_multiply_commutative (b)
Original defined command ledger · 80 lines
- 0001
intro a - 0002
intro b - 0003
intro hA - 0004
intro hB - 0005
have ha : a=0 \/ ~(a=0) - 0006
specialize eq_decidable (a) - 0007
specialize eq_decidable (0) - 0008
apply eq_decidable - 0009
cases ha - 0010
have hb : b=0 - 0011
specialize gaussian_zero_divides_only_zero (b) - 0012
apply gaussian_zero_divides_only_zero - 0013
rewrite ha_left at hA - 0014
exact hA - 0015
exists (6) - 0016
split - 0017
exact gaussian_one_unit - 0018
rewrite ha_left - 0019
rewrite hb - 0020
specialize gaussian_multiply_one_left (0) - 0021
apply gaussian_multiply_one_left - 0022
exact gaussian_zero_valid - 0023
cases hA - 0024
cases hB - 0025
have hq : ∃ q. GMul(x,x1,q) - 0026
specialize gaussian_multiply_exists (x) - 0027
specialize gaussian_multiply_exists (x1) - 0028
apply gaussian_multiply_exists - 0029
specialize gaussian_multiply_input_right_valid (a) - 0030
specialize gaussian_multiply_input_right_valid (x) - 0031
specialize gaussian_multiply_input_right_valid (b) - 0032
apply gaussian_multiply_input_right_valid - 0033
exact hA_witness - 0034
specialize gaussian_multiply_input_right_valid (b) - 0035
specialize gaussian_multiply_input_right_valid (x1) - 0036
specialize gaussian_multiply_input_right_valid (a) - 0037
apply gaussian_multiply_input_right_valid - 0038
exact hB_witness - 0039
cases hq - 0040
have hself : GMul(a,x2,a) - 0041
specialize gaussian_multiply_associative (a) - 0042
specialize gaussian_multiply_associative (x) - 0043
specialize gaussian_multiply_associative (x1) - 0044
specialize gaussian_multiply_associative (b) - 0045
specialize gaussian_multiply_associative (x2) - 0046
specialize gaussian_multiply_associative (a) - 0047
apply gaussian_multiply_associative - 0048
exact hA_witness - 0049
exact hB_witness - 0050
exact hq_witness - 0051
have heq : x2=6 - 0052
specialize gaussian_multiply_cancel_left (a) - 0053
specialize gaussian_multiply_cancel_left (x2) - 0054
specialize gaussian_multiply_cancel_left (6) - 0055
specialize gaussian_multiply_cancel_left (a) - 0056
apply gaussian_multiply_cancel_left - 0057
exact ha_right - 0058
exact hself - 0059
specialize gaussian_multiply_one_right (a) - 0060
apply gaussian_multiply_one_right - 0061
specialize gaussian_multiply_input_left_valid (a) - 0062
specialize gaussian_multiply_input_left_valid (x) - 0063
specialize gaussian_multiply_input_left_valid (b) - 0064
apply gaussian_multiply_input_left_valid - 0065
exact hA_witness - 0066
exists (x) - 0067
split - 0068
exists (x1) - 0069
specialize gaussian_multiply_output_transport (x) - 0070
specialize gaussian_multiply_output_transport (x1) - 0071
specialize gaussian_multiply_output_transport (x2) - 0072
specialize gaussian_multiply_output_transport (6) - 0073
apply gaussian_multiply_output_transport - 0074
exact heq - 0075
exact hq_witness - 0076
specialize gaussian_multiply_commutative (a) - 0077
specialize gaussian_multiply_commutative (x) - 0078
specialize gaussian_multiply_commutative (b) - 0079
apply gaussian_multiply_commutative - 0080
exact hA_witness