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.
Exact expanded first-order arithmetic statement
forall a b. ((((a) * (a)) + ((b) * (b))) = (((a) * (b)) + (0))) -> a = 0 /\ b = 0Constructive proof overview
Generated structural guide
A zero Eisenstein norm forces both natural coordinates to vanish, including the diagonal boundary.
The unchanged tactic script uses 8 declared prerequisites and contains 98 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
le_total Stable theorem; checked-use authorized EI0002 eisenstein_natural_norm_gap_value EI0001 eisenstein_natural_norm_symmetric add_comm Stable theorem; checked-use authorized zero_add Stable theorem; checked-use authorized add_eq_zero_left Stable theorem; checked-use authorized add_eq_zero_right Stable theorem; checked-use authorized square_zero_root Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.
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 exact 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