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 a b n L ga gb g. (exists q. b = a * q) -> ((((exists hlcm_left_factor_gcomp_distribute_lcm. L = a * hlcm_left_factor_gcomp_distribute_lcm) /\ (exists hlcm_right_factor_gcomp_distribute_lcm. L = b * hlcm_right_factor_gcomp_distribute_lcm)) /\ forall hlcm_common_gcomp_distribute_lcm. (exists hlcm_left_common_gcomp_distribute_lcm. hlcm_common_gcomp_distribute_lcm = a * hlcm_left_common_gcomp_distribute_lcm) -> (exists hlcm_right_common_gcomp_distribute_lcm. hlcm_common_gcomp_distribute_lcm = b * hlcm_right_common_gcomp_distribute_lcm) -> exists hlcm_least_factor_gcomp_distribute_lcm. hlcm_common_gcomp_distribute_lcm = L * hlcm_least_factor_gcomp_distribute_lcm)) -> ((((exists hag_left_factor_gcomp_distribute_small. a = ga * hag_left_factor_gcomp_distribute_small) /\ (exists hag_right_factor_gcomp_distribute_small. n = ga * hag_right_factor_gcomp_distribute_small)) /\ forall hag_divisor_gcomp_distribute_small. (exists hag_common_left_gcomp_distribute_small. a = hag_divisor_gcomp_distribute_small * hag_common_left_gcomp_distribute_small) -> (exists hag_common_right_gcomp_distribute_small. n = hag_divisor_gcomp_distribute_small * hag_common_right_gcomp_distribute_small) -> exists hag_greatest_factor_gcomp_distribute_small. ga = hag_divisor_gcomp_distribute_small * hag_greatest_factor_gcomp_distribute_small)) -> ((((exists hag_left_factor_gcomp_distribute_large. b = gb * hag_left_factor_gcomp_distribute_large) /\ (exists hag_right_factor_gcomp_distribute_large. n = gb * hag_right_factor_gcomp_distribute_large)) /\ forall hag_divisor_gcomp_distribute_large. (exists hag_common_left_gcomp_distribute_large. b = hag_divisor_gcomp_distribute_large * hag_common_left_gcomp_distribute_large) -> (exists hag_common_right_gcomp_distribute_large. n = hag_divisor_gcomp_distribute_large * hag_common_right_gcomp_distribute_large) -> exists hag_greatest_factor_gcomp_distribute_large. gb = hag_divisor_gcomp_distribute_large * hag_greatest_factor_gcomp_distribute_large)) -> ((((exists hag_left_factor_gcomp_distribute_result_gcd. L = g * hag_left_factor_gcomp_distribute_result_gcd) /\ (exists hag_right_factor_gcomp_distribute_result_gcd. n = g * hag_right_factor_gcomp_distribute_result_gcd)) /\ forall hag_divisor_gcomp_distribute_result_gcd. (exists hag_common_left_gcomp_distribute_result_gcd. L = hag_divisor_gcomp_distribute_result_gcd * hag_common_left_gcomp_distribute_result_gcd) -> (exists hag_common_right_gcomp_distribute_result_gcd. n = hag_divisor_gcomp_distribute_result_gcd * hag_common_right_gcomp_distribute_result_gcd) -> exists hag_greatest_factor_gcomp_distribute_result_gcd. g = hag_divisor_gcomp_distribute_result_gcd * hag_greatest_factor_gcomp_distribute_result_gcd)) -> ((((exists hlcm_left_factor_gcomp_distribute_result_lcm. g = ga * hlcm_left_factor_gcomp_distribute_result_lcm) /\ (exists hlcm_right_factor_gcomp_distribute_result_lcm. g = gb * hlcm_right_factor_gcomp_distribute_result_lcm)) /\ forall hlcm_common_gcomp_distribute_result_lcm. (exists hlcm_left_common_gcomp_distribute_result_lcm. hlcm_common_gcomp_distribute_result_lcm = ga * hlcm_left_common_gcomp_distribute_result_lcm) -> (exists hlcm_right_common_gcomp_distribute_result_lcm. hlcm_common_gcomp_distribute_result_lcm = gb * hlcm_right_common_gcomp_distribute_result_lcm) -> exists hlcm_least_factor_gcomp_distribute_result_lcm. hlcm_common_gcomp_distribute_result_lcm = g * hlcm_least_factor_gcomp_distribute_result_lcm))Constructive proof overview
Generated structural guide
GCD genuinely distributes over binary LCM whenever one modulus divides the other, including arbitrary zero inputs.
The unchanged tactic script uses 4 declared prerequisites and contains 48 exact native proof lines.
Alpha v34 checked-use · first admitted v25 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
is_lcm_of_dvd Alpha theorem; checked-use authorized is_lcm_unique Stable theorem; checked-use authorized is_gcd_unique Stable theorem; checked-use authorized GC0014 crt_gcd_monotone_under_divisibilityDirect 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
02Fix variables and assumptionsL11–12
03Establish hLeqL13–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is lcm unique.
04Use earlier factsL23–23
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L23
exact hab
05Calculate and transport equalitiesL24–25
06Establish hgeqL26–35
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
07Calculate and transport equalitiesL36–36
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L36
rewrite hgeq
08Use earlier factsL37–46
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
specialize is_lcm_of_dvd ga - L38
specialize is_lcm_of_dvd gb - L39
apply is_lcm_of_dvd - L40
specialize crt_gcd_monotone_under_divisibility a - L41
specialize crt_gcd_monotone_under_divisibility b - L42
specialize crt_gcd_monotone_under_divisibility n - L43
specialize crt_gcd_monotone_under_divisibility ga - L44
specialize crt_gcd_monotone_under_divisibility gb - L45
apply crt_gcd_monotone_under_divisibility - L46
exact hab
Original exact command ledger · 48 lines
- 0001
intro a - 0002
intro b - 0003
intro n - 0004
intro L - 0005
intro ga - 0006
intro gb - 0007
intro g - 0008
intro hab - 0009
intro hL - 0010
intro hga - 0011
intro hgb - 0012
intro hg - 0013
have hLeq : L = b - 0014
specialize is_lcm_unique L - 0015
specialize is_lcm_unique b - 0016
specialize is_lcm_unique a - 0017
specialize is_lcm_unique b - 0018
apply is_lcm_unique - 0019
exact hL - 0020
specialize is_lcm_of_dvd a - 0021
specialize is_lcm_of_dvd b - 0022
apply is_lcm_of_dvd - 0023
exact hab - 0024
rewrite hLeq at hg - 0025
rewrite hLeq at hg - 0026
have hgeq : g = gb - 0027
specialize is_gcd_unique g - 0028
specialize is_gcd_unique gb - 0029
specialize is_gcd_unique b - 0030
specialize is_gcd_unique n - 0031
apply is_gcd_unique - 0032
exact hg - 0033
exact hgb - 0034
rewrite hgeq - 0035
rewrite hgeq - 0036
rewrite hgeq - 0037
specialize is_lcm_of_dvd ga - 0038
specialize is_lcm_of_dvd gb - 0039
apply is_lcm_of_dvd - 0040
specialize crt_gcd_monotone_under_divisibility a - 0041
specialize crt_gcd_monotone_under_divisibility b - 0042
specialize crt_gcd_monotone_under_divisibility n - 0043
specialize crt_gcd_monotone_under_divisibility ga - 0044
specialize crt_gcd_monotone_under_divisibility gb - 0045
apply crt_gcd_monotone_under_divisibility - 0046
exact hab - 0047
exact hga - 0048
exact hgb
Separate complete second-wave branches: Full G011 proof · Alpha v27.