SK0004

squarefree_squared_divisor_is_one

Alpha v34 independently verified · alpha_closed; checked-use authorized; not Stable

Every squared divisor of a positive squarefree number has root one, not merely prime roots.

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 n a. (((~((n) = 0)) /\ (forall sfd_prime_squared_divisor_sf. (~((sfd_prime_squared_divisor_sf) = 1) /\ forall pvs_left_squared_divisor_sfdomain pvs_right_squared_divisor_sfdomain. (sfd_prime_squared_divisor_sf) = pvs_left_squared_divisor_sfdomain * pvs_right_squared_divisor_sfdomain -> pvs_left_squared_divisor_sfdomain = 1 \/ pvs_right_squared_divisor_sfdomain = 1) -> (exists pvs_le_gap_squared_divisor_sfbound. pvs_le_gap_squared_divisor_sfbound + (sfd_prime_squared_divisor_sf) = (n)) -> ~(exists pvs_factor_squared_divisor_sfsquare. (n) = (sfd_prime_squared_divisor_sf * sfd_prime_squared_divisor_sf) * pvs_factor_squared_divisor_sfsquare)))) -> (exists pvs_factor_squared_divisor_input. (n) = (a * a) * pvs_factor_squared_divisor_input) -> a = 1

Constructive proof overview

Generated structural guide

Every squared divisor of a positive squarefree number has root one, not merely prime roots.

The unchanged tactic script uses 6 declared prerequisites and contains 46 exact native proof lines.

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

Proof neighborhood

Direct dependencies

eq_decidable Stable theorem; checked-use authorized prime_divisor_exists Stable theorem; checked-use authorized SK0002 squarefree_excludes_prime_square multiple_trans Stable theorem; checked-use authorized SK0001 divides_square_of_divides mul_zero_left Stable theorem; checked-use authorized

Direct 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

46 script commands · 15 reading checkpoints · 3 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.

Named ingredients (2)
01Fix variables and assumptionsL1–4

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

  1. L1
    intro n
  2. L2
    intro a
  3. L3
    intro hsf
  4. L4
    intro hdiv
02Establish hzeroL5–8

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

  1. L5
    have hzero : a = 0 \/ ~(a = 0)
  2. L6
    specialize eq_decidable (a)
  3. L7
    specialize eq_decidable (0)
  4. L8
    apply eq_decidable
03Separate the logical casesL9–11

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

  1. L9
    cases hzero
  2. L10
    exfalso
  3. L11
    cases hsf
04Use earlier factsL12–12

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

  1. L12
    apply hsf_left
05Separate the logical casesL13–13

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

  1. L13
    cases hdiv
06Calculate and transport equalitiesL14–14

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

  1. L14
    trans (a * a) * x
07Use earlier factsL15–15

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

  1. L15
    exact hdiv_witness
08Calculate and transport equalitiesL16–18

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

  1. L16
    rewrite hzero_left
  2. L17
    rewrite hzero_left
  3. L18
    simp [mul_zero_left]
09Establish honeL19–22

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

  1. L19
    have hone : a = 1 \/ ~(a = 1)
  2. L20
    specialize eq_decidable (a)
  3. L21
    specialize eq_decidable (1)
  4. L22
    apply eq_decidable
10Separate the logical casesL23–23

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

  1. L23
    cases hone
11Use earlier factsL24–24

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

  1. L24
    exact hone_left
12Establish hpL25–29

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

  1. L25
    have hp : exists p. (~((p) = 1) /\ forall pvs_left_squared_divisor_prime pvs_right_squared_divisor_prime. (p) = pvs_left_squared_divisor_prime * pvs_right_squared_divisor_prime -> pvs_left_squared_divisor_prime = 1 \/ pvs_right_squared_divisor_prime = 1) /\ (exists pvs_factor_squared_divisor_prime_at. (a) = (p) * pvs_factor_squared_divisor_prime_at)
  2. L26
    specialize prime_divisor_exists (a)
  3. L27
    apply prime_divisor_exists
  4. L28
    exact hzero_right
  5. L29
    exact hone_right
13Separate the logical casesL30–32

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

  1. L30
    cases hp
  2. L31
    cases hp_witness
  3. L32
    exfalso
14Use earlier factsL33–42

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

  1. L33
    specialize squarefree_excludes_prime_square (n)
  2. L34
    specialize squarefree_excludes_prime_square (x)
  3. L35
    apply squarefree_excludes_prime_square
  4. L36
    exact hsf
  5. L37
    exact hp_witness_left
  6. L38
    specialize multiple_trans (a * a)
  7. L39
    specialize multiple_trans (x * x)
  8. L40
    specialize multiple_trans (n)
  9. L41
    apply multiple_trans
  10. L42
    exact hdiv
15Use earlier factsL43–46

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

  1. L43
    specialize divides_square_of_divides (x)
  2. L44
    specialize divides_square_of_divides (a)
  3. L45
    apply divides_square_of_divides
  4. L46
    exact hp_witness_right

Library-wide reading audit

Original exact command ledger · 46 lines
  1. 0001intro n
  2. 0002intro a
  3. 0003intro hsf
  4. 0004intro hdiv
  5. 0005have hzero : a = 0 \/ ~(a = 0)
  6. 0006specialize eq_decidable (a)
  7. 0007specialize eq_decidable (0)
  8. 0008apply eq_decidable
  9. 0009cases hzero
  10. 0010exfalso
  11. 0011cases hsf
  12. 0012apply hsf_left
  13. 0013cases hdiv
  14. 0014trans (a * a) * x
  15. 0015exact hdiv_witness
  16. 0016rewrite hzero_left
  17. 0017rewrite hzero_left
  18. 0018simp [mul_zero_left]
  19. 0019have hone : a = 1 \/ ~(a = 1)
  20. 0020specialize eq_decidable (a)
  21. 0021specialize eq_decidable (1)
  22. 0022apply eq_decidable
  23. 0023cases hone
  24. 0024exact hone_left
  25. 0025have hp : exists p. (~((p) = 1) /\ forall pvs_left_squared_divisor_prime pvs_right_squared_divisor_prime. (p) = pvs_left_squared_divisor_prime * pvs_right_squared_divisor_prime -> pvs_left_squared_divisor_prime = 1 \/ pvs_right_squared_divisor_prime = 1) /\ (exists pvs_factor_squared_divisor_prime_at. (a) = (p) * pvs_factor_squared_divisor_prime_at)
  26. 0026specialize prime_divisor_exists (a)
  27. 0027apply prime_divisor_exists
  28. 0028exact hzero_right
  29. 0029exact hone_right
  30. 0030cases hp
  31. 0031cases hp_witness
  32. 0032exfalso
  33. 0033specialize squarefree_excludes_prime_square (n)
  34. 0034specialize squarefree_excludes_prime_square (x)
  35. 0035apply squarefree_excludes_prime_square
  36. 0036exact hsf
  37. 0037exact hp_witness_left
  38. 0038specialize multiple_trans (a * a)
  39. 0039specialize multiple_trans (x * x)
  40. 0040specialize multiple_trans (n)
  41. 0041apply multiple_trans
  42. 0042exact hdiv
  43. 0043specialize divides_square_of_divides (x)
  44. 0044specialize divides_square_of_divides (a)
  45. 0045apply divides_square_of_divides
  46. 0046exact hp_witness_right