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 p a b c d u v w x. p * 2 = a * a + b * b + c * c + d * d -> a + b = 2 * u -> (a = b + 2 * v \/ b = a + 2 * v) -> c + d = 2 * w -> (c = d + 2 * x \/ d = c + 2 * x) -> (exists fsl_a_even_paired fsl_b_even_paired fsl_c_even_paired fsl_d_even_paired. (p) = fsl_a_even_paired * fsl_a_even_paired + fsl_b_even_paired * fsl_b_even_paired + fsl_c_even_paired * fsl_c_even_paired + fsl_d_even_paired * fsl_d_even_paired)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 c d u v w x. p * 2 = a * a + b * b + c * c + d * d -> a + b = 2 * u -> (a = b + 2 * v \/ b = a + 2 * v) -> c + d = 2 * w -> (c = d + 2 * x \/ d = c + 2 * x) -> (exists fsl_a_even_paired fsl_b_even_paired fsl_c_even_paired fsl_d_even_paired. (p) = fsl_a_even_paired * fsl_a_even_paired + fsl_b_even_paired * fsl_b_even_paired + fsl_c_even_paired * fsl_c_even_paired + fsl_d_even_paired * fsl_d_even_paired)Proof neighborhood
Direct theorem prerequisites
FS001R four_square_descent_double_pair_identity FS001C four_square_descent_scaled_norm_quotient mul_one · Stable closed add_assoc · Stable closed succ_ne_zero · Stable closedDirect 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 (2)
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–14
03Establish hidentityL15–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square descent double pair identity.
- L15
have hidentity : (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))) - L16
specialize four_square_descent_double_pair_identity a - L17
specialize four_square_descent_double_pair_identity b - L18
specialize four_square_descent_double_pair_identity c - L19
specialize four_square_descent_double_pair_identity d - L20
specialize four_square_descent_double_pair_identity v - L21
specialize four_square_descent_double_pair_identity x - L22
apply four_square_descent_double_pair_identity - L23
exact hgapfirst - L24
exact hgapsecond
04Calculate and transport equalitiesL25–28
05Establish hscaledL29–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mul one.
- L29
have hscaled : (p * 2) * (2 * 1) = (2 * u) * (2 * u) + (2 * v) * (2 * v) + (2 * w) * (2 * w) + (2 * x) * (2 * x) - L30
trans (a * a + b * b + c * c + d * d) * 2 - L31
congr - L32
exact hnorm - L33
apply mul_one - L34
trans (((2 * u) * (2 * u) + (2 * v) * (2 * v)) + ((2 * w) * (2 * w) + (2 * x) * (2 * x))) - L35
exact hidentity - L36
symm - L37
apply add_assoc
06Construct an explicit witnessL38–41
07Calculate and transport equalitiesL42–43
08Use earlier factsL44–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L44
apply mul_one - L45
specialize four_square_descent_scaled_norm_quotient p - L46
specialize four_square_descent_scaled_norm_quotient 2 - L47
specialize four_square_descent_scaled_norm_quotient 1 - L48
specialize four_square_descent_scaled_norm_quotient u - L49
specialize four_square_descent_scaled_norm_quotient v - L50
specialize four_square_descent_scaled_norm_quotient w - L51
specialize four_square_descent_scaled_norm_quotient x - L52
apply four_square_descent_scaled_norm_quotient
09Fix variables and assumptionsL53–53
Work with arbitrary variables or the premises of the current implication.
- L53
intro hzero
Original defined command ledger · 57 lines
- 0001
intro p - 0002
intro a - 0003
intro b - 0004
intro c - 0005
intro d - 0006
intro u - 0007
intro v - 0008
intro w - 0009
intro x - 0010
intro hnorm - 0011
intro hsumfirst - 0012
intro hgapfirst - 0013
intro hsumsecond - 0014
intro hgapsecond - 0015
have hidentity : (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))) - 0016
specialize four_square_descent_double_pair_identity a - 0017
specialize four_square_descent_double_pair_identity b - 0018
specialize four_square_descent_double_pair_identity c - 0019
specialize four_square_descent_double_pair_identity d - 0020
specialize four_square_descent_double_pair_identity v - 0021
specialize four_square_descent_double_pair_identity x - 0022
apply four_square_descent_double_pair_identity - 0023
exact hgapfirst - 0024
exact hgapsecond - 0025
rewrite hsumfirst at hidentity - 0026
rewrite hsumfirst at hidentity - 0027
rewrite hsumsecond at hidentity - 0028
rewrite hsumsecond at hidentity - 0029
have hscaled : (p * 2) * (2 * 1) = (2 * u) * (2 * u) + (2 * v) * (2 * v) + (2 * w) * (2 * w) + (2 * x) * (2 * x) - 0030
trans (a * a + b * b + c * c + d * d) * 2 - 0031
congr - 0032
exact hnorm - 0033
apply mul_one - 0034
trans (((2 * u) * (2 * u) + (2 * v) * (2 * v)) + ((2 * w) * (2 * w) + (2 * x) * (2 * x))) - 0035
exact hidentity - 0036
symm - 0037
apply add_assoc - 0038
exists u - 0039
exists v - 0040
exists w - 0041
exists x - 0042
trans p * 1 - 0043
symm - 0044
apply mul_one - 0045
specialize four_square_descent_scaled_norm_quotient p - 0046
specialize four_square_descent_scaled_norm_quotient 2 - 0047
specialize four_square_descent_scaled_norm_quotient 1 - 0048
specialize four_square_descent_scaled_norm_quotient u - 0049
specialize four_square_descent_scaled_norm_quotient v - 0050
specialize four_square_descent_scaled_norm_quotient w - 0051
specialize four_square_descent_scaled_norm_quotient x - 0052
apply four_square_descent_scaled_norm_quotient - 0053
intro hzero - 0054
specialize succ_ne_zero 1 - 0055
apply succ_ne_zero - 0056
exact hzero - 0057
exact hscaled