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.
All finite lists are included, even the empty list and zero moduli. A positive LCM gives x<M; at zero LCM congruence is exact equality and normalization deliberately does not require the impossible x<0.
Exact theorem in conservative defined notation
∀ k. ∀ n. ∀ d. ∀ K. ∀ N. ∀ a. ∀ b. ∀ L. ∀ ga. ∀ gb. ∀ g. k = d · K → n = d · N → ¬d = 0 → ¬N = 0 → (∀ x. Dvd(x,K) → Dvd(x,N) → x = 1) → (∀ x. Dvd(x,a) → Dvd(x,b) → x = 1) → L = k · (a · b) → IsGCD(ga,k · a,n) → IsGCD(gb,k · b,n) → IsGCD(g,L,n) → Dvd(ga,g) ∧ Dvd(gb,g) ∧ (∀ x. Dvd(ga,x) → Dvd(gb,x) → Dvd(g,x))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 157 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.
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
02Fix variables and assumptionsL11–20
03Fix variables and assumptionsL21–21
Work with arbitrary variables or the premises of the current implication.
- L21
intro hg
04Establish hauL22–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
05Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases hau
06Establish hbvL27–30
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
07Separate the logical casesL31–31
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L31
cases hbv
08Establish huvL32–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt coprime divisor pair.
- L32
have huv : ∀ frp_divisor_gfull_scaled_uv. Dvd(frp_divisor_gfull_scaled_uv,x) → Dvd(frp_divisor_gfull_scaled_uv,x1) → frp_divisor_gfull_scaled_uv = 1Definitions: Dvd(frp_divisor_gfull_scaled_uv,x)Dvd(frp_divisor_gfull_scaled_uv,x1)Original native command in the exact edition - L33
specialize crt_coprime_divisor_pair a - L34
specialize crt_coprime_divisor_pair b - L35
specialize crt_coprime_divisor_pair x - L36
specialize crt_coprime_divisor_pair x1 - L37
apply crt_coprime_divisor_pair - L38
exact hab - L39
specialize is_gcd_dvd_left x - L40
specialize is_gcd_dvd_left a - L41
specialize is_gcd_dvd_left N
09Use earlier factsL42–48
10Establish hproductL49–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt is gcd coprime product.
- L49
have hproduct : IsGCD(x · x1,a · b,N)Definitions: IsGCD(x · x1,a · b,N)Original native command in the exact edition - L50
specialize crt_is_gcd_coprime_product a - L51
specialize crt_is_gcd_coprime_product b - L52
specialize crt_is_gcd_coprime_product N - L53
specialize crt_is_gcd_coprime_product x - L54
specialize crt_is_gcd_coprime_product x1 - L55
specialize crt_is_gcd_coprime_product (x * x1) - L56
specialize crt_is_gcd_coprime_product (a * b) - L57
apply crt_is_gcd_coprime_product - L58
exact hN
11Calculate and transport equalitiesL59–60
12Use earlier factsL61–63
13Establish huaL64–73
Establish this local claim before using it. It is not an additional assumption.
- L64
have hua : IsGCD(d · x,k · a,n)Definitions: IsGCD(d · x,k · a,n)Original native command in the exact edition - L65
specialize crt_gcd_scaled_coprime_component k - L66
specialize crt_gcd_scaled_coprime_component n - L67
specialize crt_gcd_scaled_coprime_component d - L68
specialize crt_gcd_scaled_coprime_component K - L69
specialize crt_gcd_scaled_coprime_component N - L70
specialize crt_gcd_scaled_coprime_component a - L71
specialize crt_gcd_scaled_coprime_component x - L72
specialize crt_gcd_scaled_coprime_component (k * a) - L73
specialize crt_gcd_scaled_coprime_component (d * x)
14Use earlier factsL74–76
15Calculate and transport equalitiesL77–78
16Use earlier factsL79–80
17Establish hvbL81–90
Establish this local claim before using it. It is not an additional assumption.
- L81
have hvb : IsGCD(d · x1,k · b,n)Definitions: IsGCD(d · x1,k · b,n)Original native command in the exact edition - L82
specialize crt_gcd_scaled_coprime_component k - L83
specialize crt_gcd_scaled_coprime_component n - L84
specialize crt_gcd_scaled_coprime_component d - L85
specialize crt_gcd_scaled_coprime_component K - L86
specialize crt_gcd_scaled_coprime_component N - L87
specialize crt_gcd_scaled_coprime_component b - L88
specialize crt_gcd_scaled_coprime_component x1 - L89
specialize crt_gcd_scaled_coprime_component (k * b) - L90
specialize crt_gcd_scaled_coprime_component (d * x1)
18Use earlier factsL91–93
19Calculate and transport equalitiesL94–95
20Use earlier factsL96–97
21Establish hwL98–107
Establish this local claim before using it. It is not an additional assumption.
- L98
have hw : IsGCD(d · (x · x1),L,n)Definitions: IsGCD(d · (x · x1),L,n)Original native command in the exact edition - L99
specialize crt_gcd_scaled_coprime_component k - L100
specialize crt_gcd_scaled_coprime_component n - L101
specialize crt_gcd_scaled_coprime_component d - L102
specialize crt_gcd_scaled_coprime_component K - L103
specialize crt_gcd_scaled_coprime_component N - L104
specialize crt_gcd_scaled_coprime_component (a * b) - L105
specialize crt_gcd_scaled_coprime_component (x * x1) - L106
specialize crt_gcd_scaled_coprime_component L - L107
specialize crt_gcd_scaled_coprime_component (d * (x * x1))
22Use earlier factsL108–111
23Calculate and transport equalitiesL112–112
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L112
refl
24Use earlier factsL113–114
25Establish heqaL115–122
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
26Establish heqbL123–130
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
27Establish heqgL131–138
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is gcd unique.
28Establish hlcmL139–148
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply is lcm scale nonzero.
- L139
have hlcm : Dvd(d · x,d · (x · x1)) ∧ Dvd(d · x1,d · (x · x1)) ∧ (∀ y. Dvd(d · x,y) → Dvd(d · x1,y) → Dvd(d · (x · x1),y))Definitions: Dvd(d · x,d · (x · x1))Dvd(d · x1,d · (x · x1))Dvd(d · x,y)Dvd(d · x1,y)Dvd(d · (x · x1),y)Original native command in the exact edition - L140
specialize is_lcm_scale_nonzero d - L141
specialize is_lcm_scale_nonzero (x * x1) - L142
specialize is_lcm_scale_nonzero x - L143
specialize is_lcm_scale_nonzero x1 - L144
apply is_lcm_scale_nonzero - L145
exact hd - L146
specialize coprime_product_is_lcm x - L147
specialize coprime_product_is_lcm x1 - L148
apply coprime_product_is_lcm
29Use earlier factsL149–149
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L149
exact huv
30Calculate and transport equalitiesL150–156
31Use earlier factsL157–157
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L157
exact hlcm
Original defined command ledger · 157 lines
- 0001
intro k - 0002
intro n - 0003
intro d - 0004
intro K - 0005
intro N - 0006
intro a - 0007
intro b - 0008
intro L - 0009
intro ga - 0010
intro gb - 0011
intro g - 0012
intro hk - 0013
intro hn - 0014
intro hd - 0015
intro hN - 0016
intro hKN - 0017
intro hab - 0018
intro hL - 0019
intro hga - 0020
intro hgb - 0021
intro hg - 0022
have hau : ∃ u. IsGCD(u,a,N) - 0023
specialize canonical_gcd_exists a - 0024
specialize canonical_gcd_exists N - 0025
apply canonical_gcd_exists - 0026
cases hau - 0027
have hbv : ∃ v. IsGCD(v,b,N) - 0028
specialize canonical_gcd_exists b - 0029
specialize canonical_gcd_exists N - 0030
apply canonical_gcd_exists - 0031
cases hbv - 0032
have huv : ∀ frp_divisor_gfull_scaled_uv. Dvd(frp_divisor_gfull_scaled_uv,x) → Dvd(frp_divisor_gfull_scaled_uv,x1) → frp_divisor_gfull_scaled_uv = 1 - 0033
specialize crt_coprime_divisor_pair a - 0034
specialize crt_coprime_divisor_pair b - 0035
specialize crt_coprime_divisor_pair x - 0036
specialize crt_coprime_divisor_pair x1 - 0037
apply crt_coprime_divisor_pair - 0038
exact hab - 0039
specialize is_gcd_dvd_left x - 0040
specialize is_gcd_dvd_left a - 0041
specialize is_gcd_dvd_left N - 0042
apply is_gcd_dvd_left - 0043
exact hau_witness - 0044
specialize is_gcd_dvd_left x1 - 0045
specialize is_gcd_dvd_left b - 0046
specialize is_gcd_dvd_left N - 0047
apply is_gcd_dvd_left - 0048
exact hbv_witness - 0049
have hproduct : IsGCD(x · x1,a · b,N) - 0050
specialize crt_is_gcd_coprime_product a - 0051
specialize crt_is_gcd_coprime_product b - 0052
specialize crt_is_gcd_coprime_product N - 0053
specialize crt_is_gcd_coprime_product x - 0054
specialize crt_is_gcd_coprime_product x1 - 0055
specialize crt_is_gcd_coprime_product (x * x1) - 0056
specialize crt_is_gcd_coprime_product (a * b) - 0057
apply crt_is_gcd_coprime_product - 0058
exact hN - 0059
refl - 0060
refl - 0061
exact hab - 0062
exact hau_witness - 0063
exact hbv_witness - 0064
have hua : IsGCD(d · x,k · a,n) - 0065
specialize crt_gcd_scaled_coprime_component k - 0066
specialize crt_gcd_scaled_coprime_component n - 0067
specialize crt_gcd_scaled_coprime_component d - 0068
specialize crt_gcd_scaled_coprime_component K - 0069
specialize crt_gcd_scaled_coprime_component N - 0070
specialize crt_gcd_scaled_coprime_component a - 0071
specialize crt_gcd_scaled_coprime_component x - 0072
specialize crt_gcd_scaled_coprime_component (k * a) - 0073
specialize crt_gcd_scaled_coprime_component (d * x) - 0074
apply crt_gcd_scaled_coprime_component - 0075
exact hk - 0076
exact hn - 0077
refl - 0078
refl - 0079
exact hKN - 0080
exact hau_witness - 0081
have hvb : IsGCD(d · x1,k · b,n) - 0082
specialize crt_gcd_scaled_coprime_component k - 0083
specialize crt_gcd_scaled_coprime_component n - 0084
specialize crt_gcd_scaled_coprime_component d - 0085
specialize crt_gcd_scaled_coprime_component K - 0086
specialize crt_gcd_scaled_coprime_component N - 0087
specialize crt_gcd_scaled_coprime_component b - 0088
specialize crt_gcd_scaled_coprime_component x1 - 0089
specialize crt_gcd_scaled_coprime_component (k * b) - 0090
specialize crt_gcd_scaled_coprime_component (d * x1) - 0091
apply crt_gcd_scaled_coprime_component - 0092
exact hk - 0093
exact hn - 0094
refl - 0095
refl - 0096
exact hKN - 0097
exact hbv_witness - 0098
have hw : IsGCD(d · (x · x1),L,n) - 0099
specialize crt_gcd_scaled_coprime_component k - 0100
specialize crt_gcd_scaled_coprime_component n - 0101
specialize crt_gcd_scaled_coprime_component d - 0102
specialize crt_gcd_scaled_coprime_component K - 0103
specialize crt_gcd_scaled_coprime_component N - 0104
specialize crt_gcd_scaled_coprime_component (a * b) - 0105
specialize crt_gcd_scaled_coprime_component (x * x1) - 0106
specialize crt_gcd_scaled_coprime_component L - 0107
specialize crt_gcd_scaled_coprime_component (d * (x * x1)) - 0108
apply crt_gcd_scaled_coprime_component - 0109
exact hk - 0110
exact hn - 0111
exact hL - 0112
refl - 0113
exact hKN - 0114
exact hproduct - 0115
have heqa : ga = d * x - 0116
specialize is_gcd_unique ga - 0117
specialize is_gcd_unique (d * x) - 0118
specialize is_gcd_unique (k * a) - 0119
specialize is_gcd_unique n - 0120
apply is_gcd_unique - 0121
exact hga - 0122
exact hua - 0123
have heqb : gb = d * x1 - 0124
specialize is_gcd_unique gb - 0125
specialize is_gcd_unique (d * x1) - 0126
specialize is_gcd_unique (k * b) - 0127
specialize is_gcd_unique n - 0128
apply is_gcd_unique - 0129
exact hgb - 0130
exact hvb - 0131
have heqg : g = d * (x * x1) - 0132
specialize is_gcd_unique g - 0133
specialize is_gcd_unique (d * (x * x1)) - 0134
specialize is_gcd_unique L - 0135
specialize is_gcd_unique n - 0136
apply is_gcd_unique - 0137
exact hg - 0138
exact hw - 0139
have hlcm : Dvd(d · x,d · (x · x1)) ∧ Dvd(d · x1,d · (x · x1)) ∧ (∀ y. Dvd(d · x,y) → Dvd(d · x1,y) → Dvd(d · (x · x1),y)) - 0140
specialize is_lcm_scale_nonzero d - 0141
specialize is_lcm_scale_nonzero (x * x1) - 0142
specialize is_lcm_scale_nonzero x - 0143
specialize is_lcm_scale_nonzero x1 - 0144
apply is_lcm_scale_nonzero - 0145
exact hd - 0146
specialize coprime_product_is_lcm x - 0147
specialize coprime_product_is_lcm x1 - 0148
apply coprime_product_is_lcm - 0149
exact huv - 0150
rewrite heqa - 0151
rewrite heqa - 0152
rewrite heqb - 0153
rewrite heqb - 0154
rewrite heqg - 0155
rewrite heqg - 0156
rewrite heqg - 0157
exact hlcm