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 c d. (((((((((a) * (a))) + (((b) * (b))))) + (((((c) * (c))) + (((d) * (d))))))) + (((((a) * (d))) + (((b) * (c)))))) = ((((((((((a) * (b))) + (((b) * (a))))) + (((((c) * (d))) + (((d) * (c))))))) + (((((a) * (c))) + (((b) * (d))))))) + (0))) -> a = b /\ c = dConstructive proof overview
Generated structural guide
A genuine Eisenstein norm can be zero only when both represented integer coordinates are zero, with no sign-normality or positivity hypothesis.
The unchanged tactic script uses 6 declared prerequisites and contains 81 exact native proof lines.
Alpha v34 checked-use · first admitted v28 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
EI0012 eisenstein_norm_to_weighted_norm add_eq_zero_left Stable theorem; checked-use authorized add_eq_zero_right Stable theorem; checked-use authorized mul_left_cancel_nonzero Stable theorem; checked-use authorized gaussian_signed_square_zero_iff Alpha theorem; checked-use authorized add_right_cancel Stable 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 (1)
01Fix variables and assumptionsL1–5
02Establish hweightedL6–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply eisenstein norm to weighted norm.
- L6
have hweighted : exists ee_real_square_zero ee_imag_square_zero. (((((((((2) * (a))) + (d))) * (((((2) * (a))) + (d))))) + (((((((2) * (b))) + (c))) * (((((2) * (b))) + (c)))))) = ((ee_real_square_zero) + (((((((((2) * (a))) + (d))) * (((((2) * (b))) + (c))))) + (((((((2) * (b))) + (c))) * (((((2) * (a))) + (d))))))))) /\ ((((((c) * (c))) + (((d) * (d)))) = ((ee_imag_square_zero) + (((((c) * (d))) + (((d) * (c))))))) /\ (4 * 0) = ee_real_square_zero + 3 * ee_imag_square_zero) - L7
specialize eisenstein_norm_to_weighted_norm a - L8
specialize eisenstein_norm_to_weighted_norm b - L9
specialize eisenstein_norm_to_weighted_norm c - L10
specialize eisenstein_norm_to_weighted_norm d - L11
specialize eisenstein_norm_to_weighted_norm 0 - L12
apply eisenstein_norm_to_weighted_norm - L13
exact hnorm
03Separate the logical casesL14–17
04Establish hsumzeroL18–22
05Establish hfirstzeroL23–27
06Establish htriplezeroL28–32
07Establish hsecondzeroL33–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul left cancel nonzero.
08Calculate and transport equalitiesL43–43
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L43
symm
09Use earlier factsL44–44
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L44
apply PA5
10Establish himaginaryL45–45
Establish this local claim before using it. It is not an additional assumption.
- L45
have himaginary : c = d
11Establish hsquareiffL46–51
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian signed square zero iff.
12Separate the logical casesL52–52
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L52
cases hsquareiff
13Use earlier factsL53–54
14Establish htransformedL55–55
Establish this local claim before using it. It is not an additional assumption.
- L55
have htransformed : ((((2) * (a))) + (d)) = ((((2) * (b))) + (c))
15Establish hsquareiffL56–61
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply gaussian signed square zero iff.
- L56
have hsquareiff : (x = 0 -> ((((2) * (a))) + (d)) = ((((2) * (b))) + (c))) /\ (((((2) * (a))) + (d)) = ((((2) * (b))) + (c)) -> x = 0) - L57
specialize gaussian_signed_square_zero_iff ((((2) * (a))) + (d)) - L58
specialize gaussian_signed_square_zero_iff ((((2) * (b))) + (c)) - L59
specialize gaussian_signed_square_zero_iff x - L60
apply gaussian_signed_square_zero_iff - L61
exact hweighted_witness_witness_left
16Separate the logical casesL62–62
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L62
cases hsquareiff
17Use earlier factsL63–64
18Separate the logical casesL65–65
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L65
split
19Use earlier factsL66–69
20Fix variables and assumptionsL70–70
Work with arbitrary variables or the premises of the current implication.
- L70
intro htwozero
21Use earlier factsL71–76
22Calculate and transport equalitiesL77–77
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L77
trans 2 * b + c
23Use earlier factsL78–78
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L78
exact htransformed
24Calculate and transport equalitiesL79–80
25Use earlier factsL81–81
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L81
exact himaginary
Original exact command ledger · 81 lines
- 0001
intro a - 0002
intro b - 0003
intro c - 0004
intro d - 0005
intro hnorm - 0006
have hweighted : exists ee_real_square_zero ee_imag_square_zero. (((((((((2) * (a))) + (d))) * (((((2) * (a))) + (d))))) + (((((((2) * (b))) + (c))) * (((((2) * (b))) + (c)))))) = ((ee_real_square_zero) + (((((((((2) * (a))) + (d))) * (((((2) * (b))) + (c))))) + (((((((2) * (b))) + (c))) * (((((2) * (a))) + (d))))))))) /\ ((((((c) * (c))) + (((d) * (d)))) = ((ee_imag_square_zero) + (((((c) * (d))) + (((d) * (c))))))) /\ (4 * 0) = ee_real_square_zero + 3 * ee_imag_square_zero) - 0007
specialize eisenstein_norm_to_weighted_norm a - 0008
specialize eisenstein_norm_to_weighted_norm b - 0009
specialize eisenstein_norm_to_weighted_norm c - 0010
specialize eisenstein_norm_to_weighted_norm d - 0011
specialize eisenstein_norm_to_weighted_norm 0 - 0012
apply eisenstein_norm_to_weighted_norm - 0013
exact hnorm - 0014
cases hweighted - 0015
cases hweighted_witness - 0016
cases hweighted_witness_witness - 0017
cases hweighted_witness_witness_right - 0018
have hsumzero : x + 3 * x1 = 0 - 0019
trans 4 * 0 - 0020
symm - 0021
exact hweighted_witness_witness_right_right - 0022
norm_num - 0023
have hfirstzero : x = 0 - 0024
specialize add_eq_zero_left x - 0025
specialize add_eq_zero_left (3 * x1) - 0026
apply add_eq_zero_left - 0027
exact hsumzero - 0028
have htriplezero : 3 * x1 = 0 - 0029
specialize add_eq_zero_right x - 0030
specialize add_eq_zero_right (3 * x1) - 0031
apply add_eq_zero_right - 0032
exact hsumzero - 0033
have hsecondzero : x1 = 0 - 0034
specialize mul_left_cancel_nonzero 3 - 0035
specialize mul_left_cancel_nonzero x1 - 0036
specialize mul_left_cancel_nonzero 0 - 0037
apply mul_left_cancel_nonzero - 0038
intro hthreezero - 0039
apply PA1 - 0040
exact hthreezero - 0041
trans 0 - 0042
exact htriplezero - 0043
symm - 0044
apply PA5 - 0045
have himaginary : c = d - 0046
have hsquareiff : (x1 = 0 -> c = d) /\ (c = d -> x1 = 0) - 0047
specialize gaussian_signed_square_zero_iff c - 0048
specialize gaussian_signed_square_zero_iff d - 0049
specialize gaussian_signed_square_zero_iff x1 - 0050
apply gaussian_signed_square_zero_iff - 0051
exact hweighted_witness_witness_right_left - 0052
cases hsquareiff - 0053
apply hsquareiff_left - 0054
exact hsecondzero - 0055
have htransformed : ((((2) * (a))) + (d)) = ((((2) * (b))) + (c)) - 0056
have hsquareiff : (x = 0 -> ((((2) * (a))) + (d)) = ((((2) * (b))) + (c))) /\ (((((2) * (a))) + (d)) = ((((2) * (b))) + (c)) -> x = 0) - 0057
specialize gaussian_signed_square_zero_iff ((((2) * (a))) + (d)) - 0058
specialize gaussian_signed_square_zero_iff ((((2) * (b))) + (c)) - 0059
specialize gaussian_signed_square_zero_iff x - 0060
apply gaussian_signed_square_zero_iff - 0061
exact hweighted_witness_witness_left - 0062
cases hsquareiff - 0063
apply hsquareiff_left - 0064
exact hfirstzero - 0065
split - 0066
specialize mul_left_cancel_nonzero 2 - 0067
specialize mul_left_cancel_nonzero a - 0068
specialize mul_left_cancel_nonzero b - 0069
apply mul_left_cancel_nonzero - 0070
intro htwozero - 0071
apply PA1 - 0072
exact htwozero - 0073
specialize add_right_cancel (2 * a) - 0074
specialize add_right_cancel (2 * b) - 0075
specialize add_right_cancel d - 0076
apply add_right_cancel - 0077
trans 2 * b + c - 0078
exact htransformed - 0079
rewrite himaginary - 0080
refl - 0081
exact himaginary