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. ~(d=0) -> (forall sfd_common_divisor_cdp_product_coprime. (exists pvs_factor_cdp_product_coprimeleft. (m) = (sfd_common_divisor_cdp_product_coprime) * pvs_factor_cdp_product_coprimeleft) -> (exists pvs_factor_cdp_product_coprimeright. (n) = (sfd_common_divisor_cdp_product_coprime) * pvs_factor_cdp_product_coprimeright) -> sfd_common_divisor_cdp_product_coprime = 1) -> (exists pvs_factor_cdp_product_divisor. (m*n) = (d) * pvs_factor_cdp_product_divisor) -> ((((exists ec_gcd_left_cor_cdp_product_left. m = a * ec_gcd_left_cor_cdp_product_left) /\ (exists ec_gcd_right_cor_cdp_product_left. d = a * ec_gcd_right_cor_cdp_product_left)) /\ forall ec_gcd_common_cor_cdp_product_left. (exists ec_gcd_common_left_cor_cdp_product_left. m = ec_gcd_common_cor_cdp_product_left * ec_gcd_common_left_cor_cdp_product_left) -> (exists ec_gcd_common_right_cor_cdp_product_left. d = ec_gcd_common_cor_cdp_product_left * ec_gcd_common_right_cor_cdp_product_left) -> exists ec_gcd_greatest_cor_cdp_product_left. a = ec_gcd_common_cor_cdp_product_left * ec_gcd_greatest_cor_cdp_product_left)) -> ((((exists ec_gcd_left_cor_cdp_product_right. n = b * ec_gcd_left_cor_cdp_product_right) /\ (exists ec_gcd_right_cor_cdp_product_right. d = b * ec_gcd_right_cor_cdp_product_right)) /\ forall ec_gcd_common_cor_cdp_product_right. (exists ec_gcd_common_left_cor_cdp_product_right. n = ec_gcd_common_cor_cdp_product_right * ec_gcd_common_left_cor_cdp_product_right) -> (exists ec_gcd_common_right_cor_cdp_product_right. d = ec_gcd_common_cor_cdp_product_right * ec_gcd_common_right_cor_cdp_product_right) -> exists ec_gcd_greatest_cor_cdp_product_right. b = ec_gcd_common_cor_cdp_product_right * ec_gcd_greatest_cor_cdp_product_right)) -> d=a*bConstructive proof overview
Generated structural guide
The two genuine gcds multiply to the given positive divisor of a coprime product.
The unchanged tactic script uses 4 declared prerequisites and contains 43 exact native proof lines.
Alpha v34 checked-use · first admitted v32 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
crt_is_gcd_coprime_product Alpha theorem; checked-use authorized is_gcd_of_dvd Stable theorem; checked-use authorized is_gcd_symm Stable theorem; checked-use authorized 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.
01Fix variables and assumptionsL1–10
02Establish hprodL11–20
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt is gcd coprime product.
- L11
have hprod : (((exists ec_gcd_left_cor_cdp_product. (m * n) = (a * b) * ec_gcd_left_cor_cdp_product) /\ (exists ec_gcd_right_cor_cdp_product. d = (a * b) * ec_gcd_right_cor_cdp_product)) /\ forall ec_gcd_common_cor_cdp_product. (exists ec_gcd_common_left_cor_cdp_product. (m * n) = ec_gcd_common_cor_cdp_product * ec_gcd_common_left_cor_cdp_product) -> (exists ec_gcd_common_right_cor_cdp_product. d = ec_gcd_common_cor_cdp_product * ec_gcd_common_right_cor_cdp_product) -> exists ec_gcd_greatest_cor_cdp_product. (a * b) = ec_gcd_common_cor_cdp_product * ec_gcd_greatest_cor_cdp_product) - L12
specialize crt_is_gcd_coprime_product (m) - L13
specialize crt_is_gcd_coprime_product (n) - L14
specialize crt_is_gcd_coprime_product (d) - L15
specialize crt_is_gcd_coprime_product (a) - L16
specialize crt_is_gcd_coprime_product (b) - L17
specialize crt_is_gcd_coprime_product (a*b) - L18
specialize crt_is_gcd_coprime_product (m*n) - L19
apply crt_is_gcd_coprime_product - L20
exact hd
03Calculate and transport equalitiesL21–22
04Use earlier factsL23–25
05Establish hselfL26–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd of dvd.
- L26
have hself : (((exists ec_gcd_left_cor_cdp_self. d = d * ec_gcd_left_cor_cdp_self) /\ (exists ec_gcd_right_cor_cdp_self. (m * n) = d * ec_gcd_right_cor_cdp_self)) /\ forall ec_gcd_common_cor_cdp_self. (exists ec_gcd_common_left_cor_cdp_self. d = ec_gcd_common_cor_cdp_self * ec_gcd_common_left_cor_cdp_self) -> (exists ec_gcd_common_right_cor_cdp_self. (m * n) = ec_gcd_common_cor_cdp_self * ec_gcd_common_right_cor_cdp_self) -> exists ec_gcd_greatest_cor_cdp_self. d = ec_gcd_common_cor_cdp_self * ec_gcd_greatest_cor_cdp_self) - L27
specialize is_gcd_of_dvd (d) - L28
specialize is_gcd_of_dvd (m*n) - L29
apply is_gcd_of_dvd - L30
exact hdiv
06Establish hswapL31–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd symm.
- L31
have hswap : (((exists ec_gcd_left_cor_cdp_swap. (m * n) = d * ec_gcd_left_cor_cdp_swap) /\ (exists ec_gcd_right_cor_cdp_swap. d = d * ec_gcd_right_cor_cdp_swap)) /\ forall ec_gcd_common_cor_cdp_swap. (exists ec_gcd_common_left_cor_cdp_swap. (m * n) = ec_gcd_common_cor_cdp_swap * ec_gcd_common_left_cor_cdp_swap) -> (exists ec_gcd_common_right_cor_cdp_swap. d = ec_gcd_common_cor_cdp_swap * ec_gcd_common_right_cor_cdp_swap) -> exists ec_gcd_greatest_cor_cdp_swap. d = ec_gcd_common_cor_cdp_swap * ec_gcd_greatest_cor_cdp_swap) - L32
specialize is_gcd_symm (d) - L33
specialize is_gcd_symm (d) - L34
specialize is_gcd_symm (m*n) - L35
apply is_gcd_symm - L36
exact hself - L37
specialize is_gcd_unique (d) - L38
specialize is_gcd_unique (a*b) - L39
specialize is_gcd_unique (m*n) - L40
specialize is_gcd_unique (d)
Original exact command ledger · 43 lines
- 0001
intro m - 0002
intro n - 0003
intro d - 0004
intro a - 0005
intro b - 0006
intro hd - 0007
intro hc - 0008
intro hdiv - 0009
intro ha - 0010
intro hb - 0011
have hprod : (((exists ec_gcd_left_cor_cdp_product. (m * n) = (a * b) * ec_gcd_left_cor_cdp_product) /\ (exists ec_gcd_right_cor_cdp_product. d = (a * b) * ec_gcd_right_cor_cdp_product)) /\ forall ec_gcd_common_cor_cdp_product. (exists ec_gcd_common_left_cor_cdp_product. (m * n) = ec_gcd_common_cor_cdp_product * ec_gcd_common_left_cor_cdp_product) -> (exists ec_gcd_common_right_cor_cdp_product. d = ec_gcd_common_cor_cdp_product * ec_gcd_common_right_cor_cdp_product) -> exists ec_gcd_greatest_cor_cdp_product. (a * b) = ec_gcd_common_cor_cdp_product * ec_gcd_greatest_cor_cdp_product) - 0012
specialize crt_is_gcd_coprime_product (m) - 0013
specialize crt_is_gcd_coprime_product (n) - 0014
specialize crt_is_gcd_coprime_product (d) - 0015
specialize crt_is_gcd_coprime_product (a) - 0016
specialize crt_is_gcd_coprime_product (b) - 0017
specialize crt_is_gcd_coprime_product (a*b) - 0018
specialize crt_is_gcd_coprime_product (m*n) - 0019
apply crt_is_gcd_coprime_product - 0020
exact hd - 0021
refl - 0022
refl - 0023
exact hc - 0024
exact ha - 0025
exact hb - 0026
have hself : (((exists ec_gcd_left_cor_cdp_self. d = d * ec_gcd_left_cor_cdp_self) /\ (exists ec_gcd_right_cor_cdp_self. (m * n) = d * ec_gcd_right_cor_cdp_self)) /\ forall ec_gcd_common_cor_cdp_self. (exists ec_gcd_common_left_cor_cdp_self. d = ec_gcd_common_cor_cdp_self * ec_gcd_common_left_cor_cdp_self) -> (exists ec_gcd_common_right_cor_cdp_self. (m * n) = ec_gcd_common_cor_cdp_self * ec_gcd_common_right_cor_cdp_self) -> exists ec_gcd_greatest_cor_cdp_self. d = ec_gcd_common_cor_cdp_self * ec_gcd_greatest_cor_cdp_self) - 0027
specialize is_gcd_of_dvd (d) - 0028
specialize is_gcd_of_dvd (m*n) - 0029
apply is_gcd_of_dvd - 0030
exact hdiv - 0031
have hswap : (((exists ec_gcd_left_cor_cdp_swap. (m * n) = d * ec_gcd_left_cor_cdp_swap) /\ (exists ec_gcd_right_cor_cdp_swap. d = d * ec_gcd_right_cor_cdp_swap)) /\ forall ec_gcd_common_cor_cdp_swap. (exists ec_gcd_common_left_cor_cdp_swap. (m * n) = ec_gcd_common_cor_cdp_swap * ec_gcd_common_left_cor_cdp_swap) -> (exists ec_gcd_common_right_cor_cdp_swap. d = ec_gcd_common_cor_cdp_swap * ec_gcd_common_right_cor_cdp_swap) -> exists ec_gcd_greatest_cor_cdp_swap. d = ec_gcd_common_cor_cdp_swap * ec_gcd_greatest_cor_cdp_swap) - 0032
specialize is_gcd_symm (d) - 0033
specialize is_gcd_symm (d) - 0034
specialize is_gcd_symm (m*n) - 0035
apply is_gcd_symm - 0036
exact hself - 0037
specialize is_gcd_unique (d) - 0038
specialize is_gcd_unique (a*b) - 0039
specialize is_gcd_unique (m*n) - 0040
specialize is_gcd_unique (d) - 0041
apply is_gcd_unique - 0042
exact hswap - 0043
exact hprod