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.
A floor quotient in the fundamental parallelogram already gives the required strict norm decrease; global nearest-point optimality is not asserted. The shared carrier is identical to the Gaussian carrier, but the multiplication law and norm are different. Eisenstein gcd, factorization, and prime classification remain separate targets.
Exact theorem in conservative defined notation
∀ a. ∀ b. a · a + b · b = a · b + 0 → a = 0 ∧ b = 0
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 98 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–3
02Use earlier factsL4–5
03Separate the logical casesL6–7
04Establish hlargeL8–12
05Establish hvalueL13–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein natural norm gap value.
- L13
have hvalue : 0 = a * a + a * x + x * x - L14
specialize eisenstein_natural_norm_gap_value a - L15
specialize eisenstein_natural_norm_gap_value x - L16
specialize eisenstein_natural_norm_gap_value 0 - L17
apply eisenstein_natural_norm_gap_value - L18
rewrite <- hlarge - L19
rewrite <- hlarge - L20
rewrite <- hlarge - L21
exact hnorm
06Establish hfirstL22–27
07Establish hsmallzeroL28–34
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply square zero root.
08Establish hgapzeroL35–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply square zero root.
09Establish hlargezeroL43–46
10Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
11Use earlier factsL48–49
12Establish hreverseL50–55
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein natural norm symmetric.
13Separate the logical casesL56–56
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L56
cases le_total_right
14Establish hlargeL57–61
15Establish hvalueL62–70
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein natural norm gap value.
- L62
have hvalue : 0 = b * b + b * x + x * x - L63
specialize eisenstein_natural_norm_gap_value b - L64
specialize eisenstein_natural_norm_gap_value x - L65
specialize eisenstein_natural_norm_gap_value 0 - L66
apply eisenstein_natural_norm_gap_value - L67
rewrite <- hlarge - L68
rewrite <- hlarge - L69
rewrite <- hlarge - L70
exact hreverse
16Establish hfirstL71–76
17Establish hsmallzeroL77–83
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply square zero root.
18Establish hgapzeroL84–91
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply square zero root.
19Establish hlargezeroL92–95
20Separate the logical casesL96–96
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L96
split
Original defined command ledger · 98 lines
- 0001
intro a - 0002
intro b - 0003
intro hnorm - 0004
specialize le_total a - 0005
specialize le_total b - 0006
cases le_total - 0007
cases le_total_left - 0008
have hlarge : b = a + x - 0009
trans x + a - 0010
symm - 0011
exact le_total_left_witness - 0012
apply add_comm - 0013
have hvalue : 0 = a * a + a * x + x * x - 0014
specialize eisenstein_natural_norm_gap_value a - 0015
specialize eisenstein_natural_norm_gap_value x - 0016
specialize eisenstein_natural_norm_gap_value 0 - 0017
apply eisenstein_natural_norm_gap_value - 0018
rewrite <- hlarge - 0019
rewrite <- hlarge - 0020
rewrite <- hlarge - 0021
exact hnorm - 0022
have hfirst : a * a + a * x = 0 - 0023
specialize add_eq_zero_left (a * a + a * x) - 0024
specialize add_eq_zero_left (x * x) - 0025
apply add_eq_zero_left - 0026
symm - 0027
exact hvalue - 0028
have hsmallzero : a = 0 - 0029
specialize square_zero_root a - 0030
apply square_zero_root - 0031
specialize add_eq_zero_left (a * a) - 0032
specialize add_eq_zero_left (a * x) - 0033
apply add_eq_zero_left - 0034
exact hfirst - 0035
have hgapzero : x = 0 - 0036
specialize square_zero_root x - 0037
apply square_zero_root - 0038
specialize add_eq_zero_right (a * a + a * x) - 0039
specialize add_eq_zero_right (x * x) - 0040
apply add_eq_zero_right - 0041
symm - 0042
exact hvalue - 0043
have hlargezero : b = 0 - 0044
trans a + x - 0045
exact hlarge - 0046
simp [hsmallzero, hgapzero, zero_add] - 0047
split - 0048
exact hsmallzero - 0049
exact hlargezero - 0050
have hreverse : (((b) * (b)) + ((a) * (a))) = (((b) * (a)) + (0)) - 0051
specialize eisenstein_natural_norm_symmetric a - 0052
specialize eisenstein_natural_norm_symmetric b - 0053
specialize eisenstein_natural_norm_symmetric 0 - 0054
apply eisenstein_natural_norm_symmetric - 0055
exact hnorm - 0056
cases le_total_right - 0057
have hlarge : a = b + x - 0058
trans x + b - 0059
symm - 0060
exact le_total_right_witness - 0061
apply add_comm - 0062
have hvalue : 0 = b * b + b * x + x * x - 0063
specialize eisenstein_natural_norm_gap_value b - 0064
specialize eisenstein_natural_norm_gap_value x - 0065
specialize eisenstein_natural_norm_gap_value 0 - 0066
apply eisenstein_natural_norm_gap_value - 0067
rewrite <- hlarge - 0068
rewrite <- hlarge - 0069
rewrite <- hlarge - 0070
exact hreverse - 0071
have hfirst : b * b + b * x = 0 - 0072
specialize add_eq_zero_left (b * b + b * x) - 0073
specialize add_eq_zero_left (x * x) - 0074
apply add_eq_zero_left - 0075
symm - 0076
exact hvalue - 0077
have hsmallzero : b = 0 - 0078
specialize square_zero_root b - 0079
apply square_zero_root - 0080
specialize add_eq_zero_left (b * b) - 0081
specialize add_eq_zero_left (b * x) - 0082
apply add_eq_zero_left - 0083
exact hfirst - 0084
have hgapzero : x = 0 - 0085
specialize square_zero_root x - 0086
apply square_zero_root - 0087
specialize add_eq_zero_right (b * b + b * x) - 0088
specialize add_eq_zero_right (x * x) - 0089
apply add_eq_zero_right - 0090
symm - 0091
exact hvalue - 0092
have hlargezero : a = 0 - 0093
trans b + x - 0094
exact hlarge - 0095
simp [hsmallzero, hgapzero, zero_add] - 0096
split - 0097
exact hlargezero - 0098
exact hsmallzero