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 = 1Constructive 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 authorizedDirect 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 (2)
01Fix variables and assumptionsL1–4
02Establish hzeroL5–8
03Separate the logical casesL9–11
04Use earlier factsL12–12
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L12
apply hsf_left
05Separate the logical casesL13–13
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- 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.
- L14
trans (a * a) * x
07Use earlier factsL15–15
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L15
exact hdiv_witness
08Calculate and transport equalitiesL16–18
09Establish honeL19–22
10Separate the logical casesL23–23
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L23
cases hone
11Use earlier factsL24–24
Instantiate or apply named facts and discharge the corresponding proof obligations.
- 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.
- 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) - L26
specialize prime_divisor_exists (a) - L27
apply prime_divisor_exists - L28
exact hzero_right - L29
exact hone_right
13Separate the logical casesL30–32
14Use earlier factsL33–42
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
specialize squarefree_excludes_prime_square (n) - L34
specialize squarefree_excludes_prime_square (x) - L35
apply squarefree_excludes_prime_square - L36
exact hsf - L37
exact hp_witness_left - L38
specialize multiple_trans (a * a) - L39
specialize multiple_trans (x * x) - L40
specialize multiple_trans (n) - L41
apply multiple_trans - L42
exact hdiv
Original exact command ledger · 46 lines
- 0001
intro n - 0002
intro a - 0003
intro hsf - 0004
intro hdiv - 0005
have hzero : a = 0 \/ ~(a = 0) - 0006
specialize eq_decidable (a) - 0007
specialize eq_decidable (0) - 0008
apply eq_decidable - 0009
cases hzero - 0010
exfalso - 0011
cases hsf - 0012
apply hsf_left - 0013
cases hdiv - 0014
trans (a * a) * x - 0015
exact hdiv_witness - 0016
rewrite hzero_left - 0017
rewrite hzero_left - 0018
simp [mul_zero_left] - 0019
have hone : a = 1 \/ ~(a = 1) - 0020
specialize eq_decidable (a) - 0021
specialize eq_decidable (1) - 0022
apply eq_decidable - 0023
cases hone - 0024
exact hone_left - 0025
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) - 0026
specialize prime_divisor_exists (a) - 0027
apply prime_divisor_exists - 0028
exact hzero_right - 0029
exact hone_right - 0030
cases hp - 0031
cases hp_witness - 0032
exfalso - 0033
specialize squarefree_excludes_prime_square (n) - 0034
specialize squarefree_excludes_prime_square (x) - 0035
apply squarefree_excludes_prime_square - 0036
exact hsf - 0037
exact hp_witness_left - 0038
specialize multiple_trans (a * a) - 0039
specialize multiple_trans (x * x) - 0040
specialize multiple_trans (n) - 0041
apply multiple_trans - 0042
exact hdiv - 0043
specialize divides_square_of_divides (x) - 0044
specialize divides_square_of_divides (a) - 0045
apply divides_square_of_divides - 0046
exact hp_witness_right