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 r s u v. ~(n = 0) -> (((~((r) = 0)) /\ (forall sfd_prime_unique_first. (~((sfd_prime_unique_first) = 1) /\ forall pvs_left_unique_firstdomain pvs_right_unique_firstdomain. (sfd_prime_unique_first) = pvs_left_unique_firstdomain * pvs_right_unique_firstdomain -> pvs_left_unique_firstdomain = 1 \/ pvs_right_unique_firstdomain = 1) -> (exists pvs_le_gap_unique_firstbound. pvs_le_gap_unique_firstbound + (sfd_prime_unique_first) = (r)) -> ~(exists pvs_factor_unique_firstsquare. (r) = (sfd_prime_unique_first * sfd_prime_unique_first) * pvs_factor_unique_firstsquare)))) -> (((~((u) = 0)) /\ (forall sfd_prime_unique_second. (~((sfd_prime_unique_second) = 1) /\ forall pvs_left_unique_seconddomain pvs_right_unique_seconddomain. (sfd_prime_unique_second) = pvs_left_unique_seconddomain * pvs_right_unique_seconddomain -> pvs_left_unique_seconddomain = 1 \/ pvs_right_unique_seconddomain = 1) -> (exists pvs_le_gap_unique_secondbound. pvs_le_gap_unique_secondbound + (sfd_prime_unique_second) = (u)) -> ~(exists pvs_factor_unique_secondsquare. (u) = (sfd_prime_unique_second * sfd_prime_unique_second) * pvs_factor_unique_secondsquare)))) -> n = r * (s * s) -> n = u * (v * v) -> u = r /\ v = sConstructive proof overview
Generated structural guide
Gcd reduction, coprime square cancellation and squarefreeness prove literal uniqueness of both the squarefree kernel and its natural square-factor root.
The unchanged tactic script uses 10 declared prerequisites and contains 103 exact native proof lines.
Alpha v34 checked-use · first admitted v29 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
SK0008 nonzero_square_factor_root canonical_gcd_exists Alpha theorem; checked-use authorized is_gcd_dvd_left Stable theorem; checked-use authorized is_gcd_dvd_right Stable theorem; checked-use authorized factor_nonzero_left Stable theorem; checked-use authorized is_gcd_quotients_coprime_nonzero Stable theorem; checked-use authorized four_square_descent_square_factor_cancel Alpha theorem; checked-use authorized SK0007 squarefree_square_factor_reassociate SK000E squarefree_coprime_square_balance mul_one 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 (3)
01Fix variables and assumptionsL1–10
02Establish hsnonzeroL11–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply nonzero square factor root.
03Establish hgL20–23
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
- L20
have hg : exists g. ((((exists hag_left_factor_sfd_unique_gcd. s = g * hag_left_factor_sfd_unique_gcd) /\ (exists hag_right_factor_sfd_unique_gcd. v = g * hag_right_factor_sfd_unique_gcd)) /\ forall hag_divisor_sfd_unique_gcd. (exists hag_common_left_sfd_unique_gcd. s = hag_divisor_sfd_unique_gcd * hag_common_left_sfd_unique_gcd) -> (exists hag_common_right_sfd_unique_gcd. v = hag_divisor_sfd_unique_gcd * hag_common_right_sfd_unique_gcd) -> exists hag_greatest_factor_sfd_unique_gcd. g = hag_divisor_sfd_unique_gcd * hag_greatest_factor_sfd_unique_gcd)) - L21
specialize canonical_gcd_exists (s) - L22
specialize canonical_gcd_exists (v) - L23
apply canonical_gcd_exists
04Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hg
05Establish hsL25–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd dvd left.
06Separate the logical casesL31–31
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L31
cases hs
07Establish hvL32–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd dvd right.
08Separate the logical casesL38–38
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L38
cases hv
09Establish hgnonzeroL39–47
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply factor nonzero left.
10Establish hcopL48–57
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd quotients coprime nonzero.
- L48
have hcop : forall sfd_common_divisor_unique_coprime. (exists pvs_factor_unique_coprimeleft. (x1) = (sfd_common_divisor_unique_coprime) * pvs_factor_unique_coprimeleft) -> (exists pvs_factor_unique_coprimeright. (x2) = (sfd_common_divisor_unique_coprime) * pvs_factor_unique_coprimeright) -> sfd_common_divisor_unique_coprime = 1 - L49
specialize is_gcd_quotients_coprime_nonzero (x) - L50
specialize is_gcd_quotients_coprime_nonzero (s) - L51
specialize is_gcd_quotients_coprime_nonzero (v) - L52
specialize is_gcd_quotients_coprime_nonzero (x1) - L53
specialize is_gcd_quotients_coprime_nonzero (x2) - L54
apply is_gcd_quotients_coprime_nonzero - L55
exact hg_witness - L56
exact hgnonzero - L57
exact hs_witness
11Use earlier factsL58–58
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L58
exact hv_witness
12Establish hbalanceL59–68
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply four square descent square factor cancel.
- L59
have hbalance : r * (x1 * x1) = u * (x2 * x2) - L60
specialize four_square_descent_square_factor_cancel (x) - L61
specialize four_square_descent_square_factor_cancel (r * (x1 * x1)) - L62
specialize four_square_descent_square_factor_cancel (u * (x2 * x2)) - L63
apply four_square_descent_square_factor_cancel - L64
exact hgnonzero - L65
trans n - L66
trans r * ((x * x1) * (x * x1)) - L67
apply squarefree_square_factor_reassociate - L68
trans r * (s * s)
13Calculate and transport equalitiesL69–72
14Use earlier factsL73–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
exact heqr
15Calculate and transport equalitiesL74–74
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L74
trans u * (v * v)
16Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
exact hequ
17Calculate and transport equalitiesL76–80
18Use earlier factsL81–81
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L81
apply squarefree_square_factor_reassociate
19Establish hunitL82–91
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply squarefree coprime square balance.
- L82
have hunit : u = r /\ (x1 = 1 /\ x2 = 1) - L83
specialize squarefree_coprime_square_balance (r) - L84
specialize squarefree_coprime_square_balance (u) - L85
specialize squarefree_coprime_square_balance (x1) - L86
specialize squarefree_coprime_square_balance (x2) - L87
apply squarefree_coprime_square_balance - L88
exact hr - L89
exact hu - L90
exact hcop - L91
exact hbalance
20Separate the logical casesL92–94
21Use earlier factsL95–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L95
exact hunit_left
22Calculate and transport equalitiesL96–98
23Use earlier factsL99–99
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L99
apply mul_one
24Calculate and transport equalitiesL100–102
25Use earlier factsL103–103
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L103
apply mul_one
Original exact command ledger · 103 lines
- 0001
intro n - 0002
intro r - 0003
intro s - 0004
intro u - 0005
intro v - 0006
intro hn - 0007
intro hr - 0008
intro hu - 0009
intro heqr - 0010
intro hequ - 0011
have hsnonzero : ~(s = 0) - 0012
intro hz - 0013
specialize nonzero_square_factor_root (n) - 0014
specialize nonzero_square_factor_root (r) - 0015
specialize nonzero_square_factor_root (s) - 0016
apply nonzero_square_factor_root - 0017
exact hn - 0018
exact heqr - 0019
exact hz - 0020
have hg : exists g. ((((exists hag_left_factor_sfd_unique_gcd. s = g * hag_left_factor_sfd_unique_gcd) /\ (exists hag_right_factor_sfd_unique_gcd. v = g * hag_right_factor_sfd_unique_gcd)) /\ forall hag_divisor_sfd_unique_gcd. (exists hag_common_left_sfd_unique_gcd. s = hag_divisor_sfd_unique_gcd * hag_common_left_sfd_unique_gcd) -> (exists hag_common_right_sfd_unique_gcd. v = hag_divisor_sfd_unique_gcd * hag_common_right_sfd_unique_gcd) -> exists hag_greatest_factor_sfd_unique_gcd. g = hag_divisor_sfd_unique_gcd * hag_greatest_factor_sfd_unique_gcd)) - 0021
specialize canonical_gcd_exists (s) - 0022
specialize canonical_gcd_exists (v) - 0023
apply canonical_gcd_exists - 0024
cases hg - 0025
have hs : exists A. s = x * A - 0026
specialize is_gcd_dvd_left (x) - 0027
specialize is_gcd_dvd_left (s) - 0028
specialize is_gcd_dvd_left (v) - 0029
apply is_gcd_dvd_left - 0030
exact hg_witness - 0031
cases hs - 0032
have hv : exists B. v = x * B - 0033
specialize is_gcd_dvd_right (x) - 0034
specialize is_gcd_dvd_right (s) - 0035
specialize is_gcd_dvd_right (v) - 0036
apply is_gcd_dvd_right - 0037
exact hg_witness - 0038
cases hv - 0039
have hgnonzero : ~(x = 0) - 0040
intro hgzero - 0041
specialize factor_nonzero_left (s) - 0042
specialize factor_nonzero_left (x) - 0043
specialize factor_nonzero_left (x1) - 0044
apply factor_nonzero_left - 0045
exact hsnonzero - 0046
exact hs_witness - 0047
exact hgzero - 0048
have hcop : forall sfd_common_divisor_unique_coprime. (exists pvs_factor_unique_coprimeleft. (x1) = (sfd_common_divisor_unique_coprime) * pvs_factor_unique_coprimeleft) -> (exists pvs_factor_unique_coprimeright. (x2) = (sfd_common_divisor_unique_coprime) * pvs_factor_unique_coprimeright) -> sfd_common_divisor_unique_coprime = 1 - 0049
specialize is_gcd_quotients_coprime_nonzero (x) - 0050
specialize is_gcd_quotients_coprime_nonzero (s) - 0051
specialize is_gcd_quotients_coprime_nonzero (v) - 0052
specialize is_gcd_quotients_coprime_nonzero (x1) - 0053
specialize is_gcd_quotients_coprime_nonzero (x2) - 0054
apply is_gcd_quotients_coprime_nonzero - 0055
exact hg_witness - 0056
exact hgnonzero - 0057
exact hs_witness - 0058
exact hv_witness - 0059
have hbalance : r * (x1 * x1) = u * (x2 * x2) - 0060
specialize four_square_descent_square_factor_cancel (x) - 0061
specialize four_square_descent_square_factor_cancel (r * (x1 * x1)) - 0062
specialize four_square_descent_square_factor_cancel (u * (x2 * x2)) - 0063
apply four_square_descent_square_factor_cancel - 0064
exact hgnonzero - 0065
trans n - 0066
trans r * ((x * x1) * (x * x1)) - 0067
apply squarefree_square_factor_reassociate - 0068
trans r * (s * s) - 0069
rewrite hs_witness - 0070
rewrite hs_witness - 0071
refl - 0072
symm - 0073
exact heqr - 0074
trans u * (v * v) - 0075
exact hequ - 0076
trans u * ((x * x2) * (x * x2)) - 0077
rewrite hv_witness - 0078
rewrite hv_witness - 0079
refl - 0080
symm - 0081
apply squarefree_square_factor_reassociate - 0082
have hunit : u = r /\ (x1 = 1 /\ x2 = 1) - 0083
specialize squarefree_coprime_square_balance (r) - 0084
specialize squarefree_coprime_square_balance (u) - 0085
specialize squarefree_coprime_square_balance (x1) - 0086
specialize squarefree_coprime_square_balance (x2) - 0087
apply squarefree_coprime_square_balance - 0088
exact hr - 0089
exact hu - 0090
exact hcop - 0091
exact hbalance - 0092
cases hunit - 0093
cases hunit_right - 0094
split - 0095
exact hunit_left - 0096
trans x - 0097
rewrite hv_witness - 0098
rewrite hunit_right_right - 0099
apply mul_one - 0100
symm - 0101
rewrite hs_witness - 0102
rewrite hunit_right_left - 0103
apply mul_one