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
forall a b c d v x. (a = b + 2 * v \/ b = a + 2 * v) -> (c = d + 2 * x \/ d = c + 2 * x) -> (a * a + b * b + c * c + d * d) * 2 = (((a + b) * (a + b) + (2 * v) * (2 * v)) + ((c + d) * (c + d) + (2 * x) * (2 * x)))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 a b c d v x. (a = b + 2 * v \/ b = a + 2 * v) -> (c = d + 2 * x \/ d = c + 2 * x) -> (a * a + b * b + c * c + d * d) * 2 = (((a + b) * (a + b) + (2 * v) * (2 * v)) + ((c + d) * (c + d) + (2 * x) * (2 * x)))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.
Named ingredients (1)
01Fix variables and assumptionsL1–8
02Establish hidentityL9–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square two square factor identity.
- L9
have hidentity : (a * a + b * b + c * c + d * d) * (1 * 1 + 1 * 1) = (((a * 1 + b * 1) * (a * 1 + b * 1) + (2 * v) * (2 * v)) + ((c * 1 + d * 1) * (c * 1 + d * 1) + (2 * x) * (2 * x))) - L10
specialize four_square_two_square_factor_identity a - L11
specialize four_square_two_square_factor_identity b - L12
specialize four_square_two_square_factor_identity c - L13
specialize four_square_two_square_factor_identity d - L14
specialize four_square_two_square_factor_identity 1 - L15
specialize four_square_two_square_factor_identity 1 - L16
specialize four_square_two_square_factor_identity (2 * v) - L17
specialize four_square_two_square_factor_identity (2 * x) - L18
apply four_square_two_square_factor_identity
03Separate the logical casesL19–20
04Calculate and transport equalitiesL21–21
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L21
simp [zero_add]
05Separate the logical casesL22–22
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L22
right
06Calculate and transport equalitiesL23–23
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L23
simp [zero_add]
07Separate the logical casesL24–25
08Calculate and transport equalitiesL26–26
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L26
simp [zero_add]
09Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
right
10Calculate and transport equalitiesL28–28
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L28
simp [zero_add]
11Establish htwoL29–31
12Establish haoneL32–35
13Establish hboneL36–39
14Establish hconeL40–43
Original defined command ledger · 48 lines
- 0001
intro a - 0002
intro b - 0003
intro c - 0004
intro d - 0005
intro v - 0006
intro x - 0007
intro hfirst - 0008
intro hsecond - 0009
have hidentity : (a * a + b * b + c * c + d * d) * (1 * 1 + 1 * 1) = (((a * 1 + b * 1) * (a * 1 + b * 1) + (2 * v) * (2 * v)) + ((c * 1 + d * 1) * (c * 1 + d * 1) + (2 * x) * (2 * x))) - 0010
specialize four_square_two_square_factor_identity a - 0011
specialize four_square_two_square_factor_identity b - 0012
specialize four_square_two_square_factor_identity c - 0013
specialize four_square_two_square_factor_identity d - 0014
specialize four_square_two_square_factor_identity 1 - 0015
specialize four_square_two_square_factor_identity 1 - 0016
specialize four_square_two_square_factor_identity (2 * v) - 0017
specialize four_square_two_square_factor_identity (2 * x) - 0018
apply four_square_two_square_factor_identity - 0019
cases hfirst - 0020
left - 0021
simp [zero_add] - 0022
right - 0023
simp [zero_add] - 0024
cases hsecond - 0025
left - 0026
simp [zero_add] - 0027
right - 0028
simp [zero_add] - 0029
have htwo : 1 * 1 + 1 * 1 = 2 - 0030
norm_num - 0031
rewrite htwo at hidentity - 0032
have haone : a * 1 = a - 0033
apply mul_one - 0034
rewrite haone at hidentity - 0035
rewrite haone at hidentity - 0036
have hbone : b * 1 = b - 0037
apply mul_one - 0038
rewrite hbone at hidentity - 0039
rewrite hbone at hidentity - 0040
have hcone : c * 1 = c - 0041
apply mul_one - 0042
rewrite hcone at hidentity - 0043
rewrite hcone at hidentity - 0044
have hdone : d * 1 = d - 0045
apply mul_one - 0046
rewrite hdone at hidentity - 0047
rewrite hdone at hidentity - 0048
exact hidentity