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 B n. (exists fsl_bound. fsl_bound + n = B) -> ~(n = 0) -> (forall fsl_prime_universal. ((~(fsl_prime_universal = 1) /\ forall frm_prime_left_fsl_all_universal frm_prime_right_fsl_all_universal. fsl_prime_universal = frm_prime_left_fsl_all_universal * frm_prime_right_fsl_all_universal -> frm_prime_left_fsl_all_universal = 1 \/ frm_prime_right_fsl_all_universal = 1)) -> (exists fsl_a_all_universal fsl_b_all_universal fsl_c_all_universal fsl_d_all_universal. (fsl_prime_universal) = fsl_a_all_universal * fsl_a_all_universal + fsl_b_all_universal * fsl_b_all_universal + fsl_c_all_universal * fsl_c_all_universal + fsl_d_all_universal * fsl_d_all_universal)) -> (exists fsl_a_value fsl_b_value fsl_c_value fsl_d_value. (n) = fsl_a_value * fsl_a_value + fsl_b_value * fsl_b_value + fsl_c_value * fsl_c_value + fsl_d_value * fsl_d_value)Constructive proof overview
Generated structural guide
Bounded constructive prime-factor descent proves every nonzero natural is a sum of four squares once every prime has such a representation.
The unchanged tactic script uses 8 declared prerequisites and contains 82 exact native proof lines.
dependency-curried kernel-checked theorem body; Alpha enrollment and checked-use authority follow separately sealed release evidence; Stable membership remains unchanged
Proof neighborhood
Direct dependencies
le_zero Stable theorem; checked-use authorized eq_decidable Stable theorem; checked-use authorized prime_divisor_exists Stable theorem; checked-use authorized mul_comm Stable theorem; checked-use authorized proper_factor_lt Stable theorem; checked-use authorized le_trans Stable theorem; checked-use authorized le_of_succ_le_succ Stable theorem; checked-use authorized FS0030 four_square_euler_representations_closed_under_multiplicationDirect 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–1
Work with arbitrary variables or the premises of the current implication.
- L1
intro B
02Induction on BL2–6
03Separate the logical casesL7–7
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L7
exfalso
04Use earlier factsL8–11
05Fix variables and assumptionsL12–15
06Use earlier factsL16–17
07Separate the logical casesL18–18
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L18
cases eq_decidable
08Construct an explicit witnessL19–22
09Calculate and transport equalitiesL23–24
10Establish hfactorL25–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime divisor exists.
- L25
have hfactor : exists p. (((~(p = 1) /\ forall frm_prime_left_fsl_induction_factor frm_prime_right_fsl_induction_factor. p = frm_prime_left_fsl_induction_factor * frm_prime_right_fsl_induction_factor -> frm_prime_left_fsl_induction_factor = 1 \/ frm_prime_right_fsl_induction_factor = 1)) /\ exists r. n = p * r) - L26
specialize prime_divisor_exists n - L27
apply prime_divisor_exists - L28
exact hnonzero - L29
exact eq_decidable_right
11Separate the logical casesL30–32
12Establish hprefix_nonzeroL33–39
13Establish hrepresented_primeL40–43
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprimes.
- L40
have hrepresented_prime : (exists fsl_a_induction_prime fsl_b_induction_prime fsl_c_induction_prime fsl_d_induction_prime. (x) = fsl_a_induction_prime * fsl_a_induction_prime + fsl_b_induction_prime * fsl_b_induction_prime + fsl_c_induction_prime * fsl_c_induction_prime + fsl_d_induction_prime * fsl_d_induction_prime) - L41
specialize hprimes x - L42
apply hprimes - L43
exact hfactor_witness_left
14Establish horderedL44–47
15Establish hnotoneL48–48
Establish this local claim before using it. It is not an additional assumption.
- L48
have hnotone : ~(x = 1)
16Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases hfactor_witness_left
17Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
exact hfactor_witness_left_left
18Establish hstrictL51–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply proper factor lt.
19Establish hsuccessor_boundL59–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
20Establish hprefix_boundL66–70
21Establish hprefix_representationL71–80
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L71
have hprefix_representation : (exists fsl_a_induction_prefix fsl_b_induction_prefix fsl_c_induction_prefix fsl_d_induction_prefix. (x1) = fsl_a_induction_prefix * fsl_a_induction_prefix + fsl_b_induction_prefix * fsl_b_induction_prefix + fsl_c_induction_prefix * fsl_c_induction_prefix + fsl_d_induction_prefix * fsl_d_induction_prefix) - L72
specialize IH x1 - L73
apply IH - L74
exact hprefix_bound - L75
exact hprefix_nonzero - L76
exact hprimes - L77
rewrite hordered - L78
specialize four_square_euler_representations_closed_under_multiplication x1 - L79
specialize four_square_euler_representations_closed_under_multiplication x - L80
apply four_square_euler_representations_closed_under_multiplication
Original exact command ledger · 82 lines
- 0001
intro B - 0002
induction B - 0003
intro n - 0004
intro hbound - 0005
intro hnonzero - 0006
intro hprimes - 0007
exfalso - 0008
apply hnonzero - 0009
specialize le_zero n - 0010
apply le_zero - 0011
exact hbound - 0012
intro n - 0013
intro hbound - 0014
intro hnonzero - 0015
intro hprimes - 0016
specialize eq_decidable n - 0017
specialize eq_decidable 1 - 0018
cases eq_decidable - 0019
exists 1 - 0020
exists 0 - 0021
exists 0 - 0022
exists 0 - 0023
rewrite eq_decidable_left - 0024
norm_num - 0025
have hfactor : exists p. (((~(p = 1) /\ forall frm_prime_left_fsl_induction_factor frm_prime_right_fsl_induction_factor. p = frm_prime_left_fsl_induction_factor * frm_prime_right_fsl_induction_factor -> frm_prime_left_fsl_induction_factor = 1 \/ frm_prime_right_fsl_induction_factor = 1)) /\ exists r. n = p * r) - 0026
specialize prime_divisor_exists n - 0027
apply prime_divisor_exists - 0028
exact hnonzero - 0029
exact eq_decidable_right - 0030
cases hfactor - 0031
cases hfactor_witness - 0032
cases hfactor_witness_right - 0033
have hprefix_nonzero : ~(x1 = 0) - 0034
intro hzero - 0035
apply hnonzero - 0036
trans x * x1 - 0037
exact hfactor_witness_right_witness - 0038
rewrite hzero - 0039
apply PA5 - 0040
have hrepresented_prime : (exists fsl_a_induction_prime fsl_b_induction_prime fsl_c_induction_prime fsl_d_induction_prime. (x) = fsl_a_induction_prime * fsl_a_induction_prime + fsl_b_induction_prime * fsl_b_induction_prime + fsl_c_induction_prime * fsl_c_induction_prime + fsl_d_induction_prime * fsl_d_induction_prime) - 0041
specialize hprimes x - 0042
apply hprimes - 0043
exact hfactor_witness_left - 0044
have hordered : n = x1 * x - 0045
trans x * x1 - 0046
exact hfactor_witness_right_witness - 0047
apply mul_comm - 0048
have hnotone : ~(x = 1) - 0049
cases hfactor_witness_left - 0050
exact hfactor_witness_left_left - 0051
have hstrict : exists k. k + S x1 = n - 0052
specialize proper_factor_lt n - 0053
specialize proper_factor_lt x1 - 0054
specialize proper_factor_lt x - 0055
apply proper_factor_lt - 0056
exact hnonzero - 0057
exact hordered - 0058
exact hnotone - 0059
have hsuccessor_bound : exists k. k + S x1 = S B - 0060
specialize le_trans (S x1) - 0061
specialize le_trans n - 0062
specialize le_trans (S B) - 0063
apply le_trans - 0064
exact hstrict - 0065
exact hbound - 0066
have hprefix_bound : exists k. k + x1 = B - 0067
specialize le_of_succ_le_succ x1 - 0068
specialize le_of_succ_le_succ B - 0069
apply le_of_succ_le_succ - 0070
exact hsuccessor_bound - 0071
have hprefix_representation : (exists fsl_a_induction_prefix fsl_b_induction_prefix fsl_c_induction_prefix fsl_d_induction_prefix. (x1) = fsl_a_induction_prefix * fsl_a_induction_prefix + fsl_b_induction_prefix * fsl_b_induction_prefix + fsl_c_induction_prefix * fsl_c_induction_prefix + fsl_d_induction_prefix * fsl_d_induction_prefix) - 0072
specialize IH x1 - 0073
apply IH - 0074
exact hprefix_bound - 0075
exact hprefix_nonzero - 0076
exact hprimes - 0077
rewrite hordered - 0078
specialize four_square_euler_representations_closed_under_multiplication x1 - 0079
specialize four_square_euler_representations_closed_under_multiplication x - 0080
apply four_square_euler_representations_closed_under_multiplication - 0081
exact hprefix_representation - 0082
exact hrepresented_prime