TS0027 · theorem body

three_mod_four_prime_divides_two_square_norm_divides_both

Alpha v34 checked-use · independently kernel and Lean verified; not Stable

A prime congruent to three modulo four divides a two-square norm only when it divides both coordinates.

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. Prime(p)Mod4Three(p)Dvd(p,a · a + b · b)Dvd(p,a)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 a b. ((~(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_first_result. (a) = (p) * ftcn_factor_ftsc_first_result) /\ (exists ftcn_factor_ftsc_both_second_result. (b) = (p) * ftcn_factor_ftsc_both_second_result))

Proof neighborhood

Direct theorem prerequisites

prime_nonzero · Stable closed nonzero_is_succ · Stable closed TS0026 three_mod_four_prime_norm_divisor_forces_second_coordinate add_comm · Stable closed

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

46 script commands · 13 reading checkpoints · 5 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (1)
01Fix variables and assumptionsL1–6

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
  2. L2
    intro a
  3. L3
    intro b
  4. L4
    intro hprime
  5. L5
    intro hthree
  6. L6
    intro hnorm
02Establish hnonzeroL7–12

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime nonzero.

  1. L7
    have hnonzero : ~(p = 0)
  2. L8
    intro hpzero
  3. L9
    specialize prime_nonzero p
  4. L10
    apply prime_nonzero
  5. L11
    exact hprime
  6. L12
    exact hpzero
03Establish hsuccessorL13–16

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply nonzero is succ.

  1. L13
    have hsuccessor : exists n. p = S n
  2. L14
    specialize nonzero_is_succ p
  3. L15
    apply nonzero_is_succ
  4. L16
    exact hnonzero
04Separate the logical casesL17–17

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L17
    cases hsuccessor
05Establish hsecondL18–27

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply three mod four prime norm divisor forces second coordinate.

  1. L18
    have hsecond : Dvd(p,b)Definitions: Dvd(p,b)Original native command in the exact edition
  2. L19
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate p
  3. L20
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate x
  4. L21
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate a
  5. L22
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate b
  6. L23
    apply three_mod_four_prime_norm_divisor_forces_second_coordinate
  7. L24
    exact hsuccessor_witness
  8. L25
    exact hprime
  9. L26
    exact hthree
  10. L27
    exact hnorm
06Establish hswappedL28–28

Establish this local claim before using it. It is not an additional assumption.

  1. L28
    have hswapped : Dvd(p,b · b + a · a)Definitions: Dvd(p,b · b + a · a)Original native command in the exact edition
07Separate the logical casesL29–29

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L29
    cases hnorm
08Construct an explicit witnessL30–30

Supply the displayed value, then prove that it has the required property.

  1. L30
    exists x1
09Calculate and transport equalitiesL31–31

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L31
    trans a * a + b * b
10Use earlier factsL32–33

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L32
    apply add_comm
  2. L33
    exact hnorm_witness
11Establish hfirstL34–43

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply three mod four prime norm divisor forces second coordinate.

  1. L34
    have hfirst : Dvd(p,a)Definitions: Dvd(p,a)Original native command in the exact edition
  2. L35
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate p
  3. L36
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate x
  4. L37
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate b
  5. L38
    specialize three_mod_four_prime_norm_divisor_forces_second_coordinate a
  6. L39
    apply three_mod_four_prime_norm_divisor_forces_second_coordinate
  7. L40
    exact hsuccessor_witness
  8. L41
    exact hprime
  9. L42
    exact hthree
  10. L43
    exact hswapped
12Separate the logical casesL44–44

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L44
    split
13Use earlier factsL45–46

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L45
    exact hfirst
  2. L46
    exact hsecond

Library-wide reading audit

Original defined command ledger · 46 lines
  1. 0001intro p
  2. 0002intro a
  3. 0003intro b
  4. 0004intro hprime
  5. 0005intro hthree
  6. 0006intro hnorm
  7. 0007have hnonzero : ~(p = 0)
  8. 0008intro hpzero
  9. 0009specialize prime_nonzero p
  10. 0010apply prime_nonzero
  11. 0011exact hprime
  12. 0012exact hpzero
  13. 0013have hsuccessor : exists n. p = S n
  14. 0014specialize nonzero_is_succ p
  15. 0015apply nonzero_is_succ
  16. 0016exact hnonzero
  17. 0017cases hsuccessor
  18. 0018have hsecond : Dvd(p,b)
    Exact native replay linehave hsecond : exists ftcn_factor_ftsc_both_second_local. (b) = (p) * ftcn_factor_ftsc_both_second_local
  19. 0019specialize three_mod_four_prime_norm_divisor_forces_second_coordinate p
  20. 0020specialize three_mod_four_prime_norm_divisor_forces_second_coordinate x
  21. 0021specialize three_mod_four_prime_norm_divisor_forces_second_coordinate a
  22. 0022specialize three_mod_four_prime_norm_divisor_forces_second_coordinate b
  23. 0023apply three_mod_four_prime_norm_divisor_forces_second_coordinate
  24. 0024exact hsuccessor_witness
  25. 0025exact hprime
  26. 0026exact hthree
  27. 0027exact hnorm
  28. 0028have hswapped : Dvd(p,b · b + a · a)
    Exact native replay linehave hswapped : exists ftcn_factor_ftsc_swapped_norm. (b * b + a * a) = (p) * ftcn_factor_ftsc_swapped_norm
  29. 0029cases hnorm
  30. 0030exists x1
  31. 0031trans a * a + b * b
  32. 0032apply add_comm
  33. 0033exact hnorm_witness
  34. 0034have hfirst : Dvd(p,a)
    Exact native replay linehave hfirst : exists ftcn_factor_ftsc_both_first_local. (a) = (p) * ftcn_factor_ftsc_both_first_local
  35. 0035specialize three_mod_four_prime_norm_divisor_forces_second_coordinate p
  36. 0036specialize three_mod_four_prime_norm_divisor_forces_second_coordinate x
  37. 0037specialize three_mod_four_prime_norm_divisor_forces_second_coordinate b
  38. 0038specialize three_mod_four_prime_norm_divisor_forces_second_coordinate a
  39. 0039apply three_mod_four_prime_norm_divisor_forces_second_coordinate
  40. 0040exact hsuccessor_witness
  41. 0041exact hprime
  42. 0042exact hthree
  43. 0043exact hswapped
  44. 0044split
  45. 0045exact hfirst
  46. 0046exact hsecond