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. ∀ n. ∀ a. ∀ b. p = S n → Prime(p) → Mod4Three(p) → Dvd(p,a · a + b · b) → Dvd(p,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 n a b. p = S n -> ((~(p = 1) /\ forall frm_prime_left_ftsc_prime frm_prime_right_ftsc_prime. p = frm_prime_left_ftsc_prime * frm_prime_right_ftsc_prime -> frm_prime_left_ftsc_prime = 1 \/ frm_prime_right_ftsc_prime = 1)) -> (exists ftsc_four_three_ftsc_prime. (p) = 4 * ftsc_four_three_ftsc_prime + 3) -> (exists ftcn_factor_ftsc_norm. (a * a + b * b) = (p) * ftcn_factor_ftsc_norm) -> (exists ftcn_factor_ftsc_second_result. (b) = (p) * ftcn_factor_ftsc_second_result)Proof neighborhood
Direct theorem prerequisites
TS0024 prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root TS0025 three_mod_four_prime_has_no_negative_one_rootDirect 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–8
02Establish hsplitL9–13
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime coprime or divides.
- L9
have hsplit : Coprime(p,b) ∨ Dvd(p,b)Definitions: Coprime(p,b)Dvd(p,b)Original native command in the exact edition - L10
specialize prime_coprime_or_divides p - L11
specialize prime_coprime_or_divides b - L12
apply prime_coprime_or_divides - L13
exact hprime
03Separate the logical casesL14–15
04Establish hunitL16–17
Establish this local claim before using it. It is not an additional assumption.
05Establish hpdividesL18–20
Establish this local claim before using it. It is not an additional assumption.
06Establish hponeL21–25
07Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases hprime
08Use earlier factsL27–28
09Establish hoddL29–32
10Establish hrootL33–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime divisible two square norm unit coordinate yields negative one root.
- L33
- L34
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root p - L35
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root n - L36
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root a - L37
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root b - L38
apply prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root - L39
exact hpredecessor - L40
exact hprime - L41
exact hnorm - L42
exact hunit
11Use earlier factsL43–51
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 51 lines
- 0001
intro p - 0002
intro n - 0003
intro a - 0004
intro b - 0005
intro hpredecessor - 0006
intro hprime - 0007
intro hthree - 0008
intro hnorm - 0009
have hsplit : Coprime(p,b) ∨ Dvd(p,b)Exact native replay line
have hsplit : (forall d. (exists u. p = d * u) -> (exists v. b = d * v) -> d = 1) \/ (exists k. b = p * k) - 0010
specialize prime_coprime_or_divides p - 0011
specialize prime_coprime_or_divides b - 0012
apply prime_coprime_or_divides - 0013
exact hprime - 0014
cases hsplit - 0015
exfalso - 0016
have hunit : ¬Dvd(p,b)Exact native replay line
have hunit : ~(exists k. b = p * k) - 0017
intro hdivides - 0018
have hpdivides : Dvd(p,p)Exact native replay line
have hpdivides : exists k. p = p * k - 0019
specialize multiple_refl p - 0020
exact multiple_refl - 0021
have hpone : p = 1 - 0022
specialize hsplit_left p - 0023
apply hsplit_left - 0024
exact hpdivides - 0025
exact hdivides - 0026
cases hprime - 0027
apply hprime_left - 0028
exact hpone - 0029
have hodd : Odd(p)Exact native replay line
have hodd : exists ftsc_odd_ftsc_prime. (p) = 2 * ftsc_odd_ftsc_prime + 1 - 0030
specialize mod4_three_is_odd p - 0031
apply mod4_three_is_odd - 0032
exact hthree - 0033
have hroot : QRes(p,n)Exact native replay line
have hroot : exists qr_x_ftsc_predecessor. exists qr_u_ftsc_predecessor qr_v_ftsc_predecessor. qr_x_ftsc_predecessor * qr_x_ftsc_predecessor + p * qr_u_ftsc_predecessor = n + p * qr_v_ftsc_predecessor - 0034
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root p - 0035
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root n - 0036
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root a - 0037
specialize prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root b - 0038
apply prime_divisible_two_square_norm_unit_coordinate_yields_negative_one_root - 0039
exact hpredecessor - 0040
exact hprime - 0041
exact hnorm - 0042
exact hunit - 0043
specialize three_mod_four_prime_has_no_negative_one_root p - 0044
specialize three_mod_four_prime_has_no_negative_one_root n - 0045
apply three_mod_four_prime_has_no_negative_one_root - 0046
exact hpredecessor - 0047
exact hprime - 0048
exact hodd - 0049
exact hthree - 0050
exact hroot - 0051
exact hsplit_right