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.
Statement with defined notation
∀ p. ∀ a. ∀ b. ModEq(p,a + b,0) → ModEq(p,a · a,b · b)Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order statement
forall p a b. (exists ftcn_left_opposite ftcn_right_opposite. (a + b) + (p) * ftcn_left_opposite = (0) + (p) * ftcn_right_opposite) -> (exists ftcn_left_opposite_squares ftcn_right_opposite_squares. (a * a) + (p) * ftcn_left_opposite_squares = (b * b) + (p) * ftcn_right_opposite_squares)Proof neighborhood
Direct theorem prerequisites
Direct theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay command.
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.
01Fix variables and assumptionsL1–4
02Establish haL5–11
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul left.
- L5
have ha : ModEq(p,a · (a + b),a · 0)Definitions: ModEq(p,a · (a + b),a · 0)Original native command in the exact edition - L6
specialize mod_eq_mul_left p - L7
specialize mod_eq_mul_left (a + b) - L8
specialize mod_eq_mul_left 0 - L9
specialize mod_eq_mul_left a - L10
apply mod_eq_mul_left - L11
exact hsum
03Establish ha_zeroL12–14
04Establish hbL15–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq mul left.
- L15
have hb : ModEq(p,b · (a + b),b · 0)Definitions: ModEq(p,b · (a + b),b · 0)Original native command in the exact edition - L16
specialize mod_eq_mul_left p - L17
specialize mod_eq_mul_left (a + b) - L18
specialize mod_eq_mul_left 0 - L19
specialize mod_eq_mul_left b - L20
apply mod_eq_mul_left - L21
exact hsum
05Establish hb_zeroL22–24
06Establish hreverseL25–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
- L25
have hreverse : ModEq(p,0,b · (a + b))Definitions: ModEq(p,0,b · (a + b))Original native command in the exact edition - L26
specialize mod_eq_symm p - L27
specialize mod_eq_symm (b * (a + b)) - L28
specialize mod_eq_symm 0 - L29
apply mod_eq_symm - L30
exact hb
07Establish hequalL31–38
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L31
have hequal : ModEq(p,a · (a + b),b · (a + b))Definitions: ModEq(p,a · (a + b),b · (a + b))Original native command in the exact edition - L32
specialize mod_eq_trans p - L33
specialize mod_eq_trans (a * (a + b)) - L34
specialize mod_eq_trans 0 - L35
specialize mod_eq_trans (b * (a + b)) - L36
apply mod_eq_trans - L37
exact ha - L38
exact hreverse
08Establish hleftL39–40
09Establish hrightL41–50
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq add cancel left.
- L41
have hright : b * (a + b) = a * b + b * b - L42
simp [mul_add, mul_comm] - L43
rewrite hleft at hequal - L44
rewrite hright at hequal - L45
specialize mod_eq_add_cancel_left p - L46
specialize mod_eq_add_cancel_left (a * b) - L47
specialize mod_eq_add_cancel_left (a * a) - L48
specialize mod_eq_add_cancel_left (b * b) - L49
apply mod_eq_add_cancel_left - L50
exact hequal
Original defined command ledger · 50 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro hsum - 0005
have ha : ModEq(p,a · (a + b),a · 0)Exact native replay line
have ha : exists ftcn_left_opposite_left ftcn_right_opposite_left. (a * (a + b)) + (p) * ftcn_left_opposite_left = (a * 0) + (p) * ftcn_right_opposite_left - 0006
specialize mod_eq_mul_left p - 0007
specialize mod_eq_mul_left (a + b) - 0008
specialize mod_eq_mul_left 0 - 0009
specialize mod_eq_mul_left a - 0010
apply mod_eq_mul_left - 0011
exact hsum - 0012
have ha_zero : a * 0 = 0 - 0013
simp - 0014
rewrite ha_zero at ha - 0015
have hb : ModEq(p,b · (a + b),b · 0)Exact native replay line
have hb : exists ftcn_left_opposite_right ftcn_right_opposite_right. (b * (a + b)) + (p) * ftcn_left_opposite_right = (b * 0) + (p) * ftcn_right_opposite_right - 0016
specialize mod_eq_mul_left p - 0017
specialize mod_eq_mul_left (a + b) - 0018
specialize mod_eq_mul_left 0 - 0019
specialize mod_eq_mul_left b - 0020
apply mod_eq_mul_left - 0021
exact hsum - 0022
have hb_zero : b * 0 = 0 - 0023
simp - 0024
rewrite hb_zero at hb - 0025
have hreverse : ModEq(p,0,b · (a + b))Exact native replay line
have hreverse : exists ftcn_left_opposite_reverse ftcn_right_opposite_reverse. (0) + (p) * ftcn_left_opposite_reverse = (b * (a + b)) + (p) * ftcn_right_opposite_reverse - 0026
specialize mod_eq_symm p - 0027
specialize mod_eq_symm (b * (a + b)) - 0028
specialize mod_eq_symm 0 - 0029
apply mod_eq_symm - 0030
exact hb - 0031
have hequal : ModEq(p,a · (a + b),b · (a + b))Exact native replay line
have hequal : exists ftcn_left_opposite_equal ftcn_right_opposite_equal. (a * (a + b)) + (p) * ftcn_left_opposite_equal = (b * (a + b)) + (p) * ftcn_right_opposite_equal - 0032
specialize mod_eq_trans p - 0033
specialize mod_eq_trans (a * (a + b)) - 0034
specialize mod_eq_trans 0 - 0035
specialize mod_eq_trans (b * (a + b)) - 0036
apply mod_eq_trans - 0037
exact ha - 0038
exact hreverse - 0039
have hleft : a * (a + b) = a * b + a * a - 0040
simp [mul_add, add_comm] - 0041
have hright : b * (a + b) = a * b + b * b - 0042
simp [mul_add, mul_comm] - 0043
rewrite hleft at hequal - 0044
rewrite hright at hequal - 0045
specialize mod_eq_add_cancel_left p - 0046
specialize mod_eq_add_cancel_left (a * b) - 0047
specialize mod_eq_add_cancel_left (a * a) - 0048
specialize mod_eq_add_cancel_left (b * b) - 0049
apply mod_eq_add_cancel_left - 0050
exact hequal