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 expanded first-order arithmetic statement
forall m n d a b c e. (forall sfd_common_divisor_cdp_unique_coprime. (exists pvs_factor_cdp_unique_coprimeleft. (m) = (sfd_common_divisor_cdp_unique_coprime) * pvs_factor_cdp_unique_coprimeleft) -> (exists pvs_factor_cdp_unique_coprimeright. (n) = (sfd_common_divisor_cdp_unique_coprime) * pvs_factor_cdp_unique_coprimeright) -> sfd_common_divisor_cdp_unique_coprime = 1) -> (((~((a)=0)) /\ (((~((b)=0)) /\ (((exists pvs_factor_cdp_unique_firstleft. (m) = (a) * pvs_factor_cdp_unique_firstleft) /\ (((exists pvs_factor_cdp_unique_firstright. (n) = (b) * pvs_factor_cdp_unique_firstright) /\ ((d)=(a)*(b)))))))))) -> (((~((c)=0)) /\ (((~((e)=0)) /\ (((exists pvs_factor_cdp_unique_secondleft. (m) = (c) * pvs_factor_cdp_unique_secondleft) /\ (((exists pvs_factor_cdp_unique_secondright. (n) = (e) * pvs_factor_cdp_unique_secondright) /\ ((d)=(c)*(e)))))))))) -> ((a=c) /\ (b=e))Constructive proof overview
Generated structural guide
The positive-divisor product map is injective on genuine divisor pairs of coprime inputs.
The unchanged tactic script uses 2 declared prerequisites and contains 45 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
MX000D coprime_divisor_factor_pair_coordinates is_gcd_unique 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 (1)
01Fix variables and assumptionsL1–10
02Establish hpcoordsL11–19
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime divisor factor pair coordinates.
- L11
have hpcoords : IsGCD(a,m,d) ∧ IsGCD(b,n,d)Definitions: IsGCD - L12
specialize coprime_divisor_factor_pair_coordinates (m) - L13
specialize coprime_divisor_factor_pair_coordinates (n) - L14
specialize coprime_divisor_factor_pair_coordinates (d) - L15
specialize coprime_divisor_factor_pair_coordinates (a) - L16
specialize coprime_divisor_factor_pair_coordinates (b) - L17
apply coprime_divisor_factor_pair_coordinates - L18
exact hc - L19
exact hp
03Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
cases hpcoords
04Establish hqcoordsL21–29
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply coprime divisor factor pair coordinates.
- L21
have hqcoords : IsGCD(c,m,d) ∧ IsGCD(e,n,d)Definitions: IsGCD - L22
specialize coprime_divisor_factor_pair_coordinates (m) - L23
specialize coprime_divisor_factor_pair_coordinates (n) - L24
specialize coprime_divisor_factor_pair_coordinates (d) - L25
specialize coprime_divisor_factor_pair_coordinates (c) - L26
specialize coprime_divisor_factor_pair_coordinates (e) - L27
apply coprime_divisor_factor_pair_coordinates - L28
exact hc - L29
exact hq
05Separate the logical casesL30–31
06Use earlier factsL32–41
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original exact command ledger · 45 lines
- 0001
intro m - 0002
intro n - 0003
intro d - 0004
intro a - 0005
intro b - 0006
intro c - 0007
intro e - 0008
intro hc - 0009
intro hp - 0010
intro hq - 0011
have hpcoords : (((((exists ec_gcd_left_cor_cdp_unique_pleft. m = a * ec_gcd_left_cor_cdp_unique_pleft) /\ (exists ec_gcd_right_cor_cdp_unique_pleft. d = a * ec_gcd_right_cor_cdp_unique_pleft)) /\ forall ec_gcd_common_cor_cdp_unique_pleft. (exists ec_gcd_common_left_cor_cdp_unique_pleft. m = ec_gcd_common_cor_cdp_unique_pleft * ec_gcd_common_left_cor_cdp_unique_pleft) -> (exists ec_gcd_common_right_cor_cdp_unique_pleft. d = ec_gcd_common_cor_cdp_unique_pleft * ec_gcd_common_right_cor_cdp_unique_pleft) -> exists ec_gcd_greatest_cor_cdp_unique_pleft. a = ec_gcd_common_cor_cdp_unique_pleft * ec_gcd_greatest_cor_cdp_unique_pleft)) /\ ((((exists ec_gcd_left_cor_cdp_unique_pright. n = b * ec_gcd_left_cor_cdp_unique_pright) /\ (exists ec_gcd_right_cor_cdp_unique_pright. d = b * ec_gcd_right_cor_cdp_unique_pright)) /\ forall ec_gcd_common_cor_cdp_unique_pright. (exists ec_gcd_common_left_cor_cdp_unique_pright. n = ec_gcd_common_cor_cdp_unique_pright * ec_gcd_common_left_cor_cdp_unique_pright) -> (exists ec_gcd_common_right_cor_cdp_unique_pright. d = ec_gcd_common_cor_cdp_unique_pright * ec_gcd_common_right_cor_cdp_unique_pright) -> exists ec_gcd_greatest_cor_cdp_unique_pright. b = ec_gcd_common_cor_cdp_unique_pright * ec_gcd_greatest_cor_cdp_unique_pright))) - 0012
specialize coprime_divisor_factor_pair_coordinates (m) - 0013
specialize coprime_divisor_factor_pair_coordinates (n) - 0014
specialize coprime_divisor_factor_pair_coordinates (d) - 0015
specialize coprime_divisor_factor_pair_coordinates (a) - 0016
specialize coprime_divisor_factor_pair_coordinates (b) - 0017
apply coprime_divisor_factor_pair_coordinates - 0018
exact hc - 0019
exact hp - 0020
cases hpcoords - 0021
have hqcoords : (((((exists ec_gcd_left_cor_cdp_unique_qleft. m = c * ec_gcd_left_cor_cdp_unique_qleft) /\ (exists ec_gcd_right_cor_cdp_unique_qleft. d = c * ec_gcd_right_cor_cdp_unique_qleft)) /\ forall ec_gcd_common_cor_cdp_unique_qleft. (exists ec_gcd_common_left_cor_cdp_unique_qleft. m = ec_gcd_common_cor_cdp_unique_qleft * ec_gcd_common_left_cor_cdp_unique_qleft) -> (exists ec_gcd_common_right_cor_cdp_unique_qleft. d = ec_gcd_common_cor_cdp_unique_qleft * ec_gcd_common_right_cor_cdp_unique_qleft) -> exists ec_gcd_greatest_cor_cdp_unique_qleft. c = ec_gcd_common_cor_cdp_unique_qleft * ec_gcd_greatest_cor_cdp_unique_qleft)) /\ ((((exists ec_gcd_left_cor_cdp_unique_qright. n = e * ec_gcd_left_cor_cdp_unique_qright) /\ (exists ec_gcd_right_cor_cdp_unique_qright. d = e * ec_gcd_right_cor_cdp_unique_qright)) /\ forall ec_gcd_common_cor_cdp_unique_qright. (exists ec_gcd_common_left_cor_cdp_unique_qright. n = ec_gcd_common_cor_cdp_unique_qright * ec_gcd_common_left_cor_cdp_unique_qright) -> (exists ec_gcd_common_right_cor_cdp_unique_qright. d = ec_gcd_common_cor_cdp_unique_qright * ec_gcd_common_right_cor_cdp_unique_qright) -> exists ec_gcd_greatest_cor_cdp_unique_qright. e = ec_gcd_common_cor_cdp_unique_qright * ec_gcd_greatest_cor_cdp_unique_qright))) - 0022
specialize coprime_divisor_factor_pair_coordinates (m) - 0023
specialize coprime_divisor_factor_pair_coordinates (n) - 0024
specialize coprime_divisor_factor_pair_coordinates (d) - 0025
specialize coprime_divisor_factor_pair_coordinates (c) - 0026
specialize coprime_divisor_factor_pair_coordinates (e) - 0027
apply coprime_divisor_factor_pair_coordinates - 0028
exact hc - 0029
exact hq - 0030
cases hqcoords - 0031
split - 0032
specialize is_gcd_unique (a) - 0033
specialize is_gcd_unique (c) - 0034
specialize is_gcd_unique (m) - 0035
specialize is_gcd_unique (d) - 0036
apply is_gcd_unique - 0037
exact hpcoords_left - 0038
exact hqcoords_left - 0039
specialize is_gcd_unique (b) - 0040
specialize is_gcd_unique (e) - 0041
specialize is_gcd_unique (n) - 0042
specialize is_gcd_unique (d) - 0043
apply is_gcd_unique - 0044
exact hpcoords_right - 0045
exact hqcoords_right