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
∀ b. ∀ c. ∀ l. ∀ n. ∀ u. ∀ v. ∀ L. ∀ g. CRTPrefixLCM(b,c,l,L) → CRTPrefixGcdCongruences(b,c,l,n,u,v) → IsGCD(g,L,n) → ModEq(g,u,v)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 135 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.
Named ingredients (2)
01Fix variables and assumptionsL1–2
02Induction on lL3–11
03Establish hLoneL12–21
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt prefix lcm unique.
- L12
have hLone : L = 1 - L13
specialize crt_prefix_lcm_unique b - L14
specialize crt_prefix_lcm_unique c - L15
specialize crt_prefix_lcm_unique 0 - L16
specialize crt_prefix_lcm_unique L - L17
specialize crt_prefix_lcm_unique 1 - L18
apply crt_prefix_lcm_unique - L19
exact hL - L20
specialize crt_prefix_lcm_empty b - L21
specialize crt_prefix_lcm_empty c
04Use earlier factsL22–22
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L22
apply crt_prefix_lcm_empty
05Establish hgoneL23–25
06Separate the logical casesL26–26
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L26
cases canonical_gcd_one_left_iff
07Use earlier factsL27–27
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L27
apply canonical_gcd_one_left_iff_left
08Calculate and transport equalitiesL28–29
09Use earlier factsL30–30
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L30
exact hg
10Calculate and transport equalitiesL31–32
11Use earlier factsL33–35
12Fix variables and assumptionsL36–43
13Use earlier factsL44–46
14Separate the logical casesL47–48
15Establish hmL49–53
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.
- L49
have hm : ∃ m. BetaAt(b,c,l,m)Definitions: BetaAt(b,c,l,m)Original native command in the exact edition - L50
specialize beta_at_exists b - L51
specialize beta_at_exists c - L52
specialize beta_at_exists l - L53
apply beta_at_exists
16Separate the logical casesL54–54
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L54
cases hm
17Establish hKL55–58
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply lcm exists relational.
18Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
cases hK
19Establish hLeqL60–69
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt prefix lcm unique.
- L60
have hLeq : L = x2 - L61
specialize crt_prefix_lcm_unique b - L62
specialize crt_prefix_lcm_unique c - L63
specialize crt_prefix_lcm_unique (S l) - L64
specialize crt_prefix_lcm_unique L - L65
specialize crt_prefix_lcm_unique x2 - L66
apply crt_prefix_lcm_unique - L67
exact hL - L68
specialize crt_prefix_lcm_successor_intro b - L69
specialize crt_prefix_lcm_successor_intro c
20Use earlier factsL70–77
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L70
specialize crt_prefix_lcm_successor_intro l - L71
specialize crt_prefix_lcm_successor_intro x - L72
specialize crt_prefix_lcm_successor_intro x1 - L73
specialize crt_prefix_lcm_successor_intro x2 - L74
apply crt_prefix_lcm_successor_intro - L75
exact crt_prefix_lcm_exists_unique_witness_left - L76
exact hm_witness - L77
exact hK_witness
21Establish hdL78–81
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
22Separate the logical casesL82–82
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L82
cases hd
23Establish heL83–86
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply canonical gcd exists.
24Separate the logical casesL87–87
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L87
cases he
25Establish hmodL88–97
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
26Use earlier factsL98–104
Instantiate or apply named facts and discharge the corresponding proof obligations.
27Establish hlatL105–114
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply crt gcd lcm distributes.
- L105
- L106
specialize crt_gcd_lcm_distributes x - L107
specialize crt_gcd_lcm_distributes x1 - L108
specialize crt_gcd_lcm_distributes n - L109
specialize crt_gcd_lcm_distributes x2 - L110
specialize crt_gcd_lcm_distributes x3 - L111
specialize crt_gcd_lcm_distributes x4 - L112
specialize crt_gcd_lcm_distributes g - L113
apply crt_gcd_lcm_distributes - L114
exact hK_witness
28Use earlier factsL115–116
29Calculate and transport equalitiesL117–118
30Use earlier factsL119–128
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 135 lines
- 0001
intro b - 0002
intro c - 0003
induction l - 0004
intro n - 0005
intro u - 0006
intro v - 0007
intro L - 0008
intro g - 0009
intro hL - 0010
intro hp - 0011
intro hg - 0012
have hLone : L = 1 - 0013
specialize crt_prefix_lcm_unique b - 0014
specialize crt_prefix_lcm_unique c - 0015
specialize crt_prefix_lcm_unique 0 - 0016
specialize crt_prefix_lcm_unique L - 0017
specialize crt_prefix_lcm_unique 1 - 0018
apply crt_prefix_lcm_unique - 0019
exact hL - 0020
specialize crt_prefix_lcm_empty b - 0021
specialize crt_prefix_lcm_empty c - 0022
apply crt_prefix_lcm_empty - 0023
have hgone : g = 1 - 0024
specialize canonical_gcd_one_left_iff n - 0025
specialize canonical_gcd_one_left_iff g - 0026
cases canonical_gcd_one_left_iff - 0027
apply canonical_gcd_one_left_iff_left - 0028
rewrite <- hLone - 0029
rewrite <- hLone - 0030
exact hg - 0031
rewrite hgone - 0032
rewrite hgone - 0033
specialize crt_mod_one_universal u - 0034
specialize crt_mod_one_universal v - 0035
apply crt_mod_one_universal - 0036
intro n - 0037
intro u - 0038
intro v - 0039
intro L - 0040
intro g - 0041
intro hL - 0042
intro hp - 0043
intro hg - 0044
specialize crt_prefix_lcm_exists_unique b - 0045
specialize crt_prefix_lcm_exists_unique c - 0046
specialize crt_prefix_lcm_exists_unique l - 0047
cases crt_prefix_lcm_exists_unique - 0048
cases crt_prefix_lcm_exists_unique_witness - 0049
have hm : ∃ m. BetaAt(b,c,l,m) - 0050
specialize beta_at_exists b - 0051
specialize beta_at_exists c - 0052
specialize beta_at_exists l - 0053
apply beta_at_exists - 0054
cases hm - 0055
have hK : ∃ K. Dvd(x,K) ∧ Dvd(x1,K) ∧ (∀ y. Dvd(x,y) → Dvd(x1,y) → Dvd(K,y)) - 0056
specialize lcm_exists_relational x - 0057
specialize lcm_exists_relational x1 - 0058
apply lcm_exists_relational - 0059
cases hK - 0060
have hLeq : L = x2 - 0061
specialize crt_prefix_lcm_unique b - 0062
specialize crt_prefix_lcm_unique c - 0063
specialize crt_prefix_lcm_unique (S l) - 0064
specialize crt_prefix_lcm_unique L - 0065
specialize crt_prefix_lcm_unique x2 - 0066
apply crt_prefix_lcm_unique - 0067
exact hL - 0068
specialize crt_prefix_lcm_successor_intro b - 0069
specialize crt_prefix_lcm_successor_intro c - 0070
specialize crt_prefix_lcm_successor_intro l - 0071
specialize crt_prefix_lcm_successor_intro x - 0072
specialize crt_prefix_lcm_successor_intro x1 - 0073
specialize crt_prefix_lcm_successor_intro x2 - 0074
apply crt_prefix_lcm_successor_intro - 0075
exact crt_prefix_lcm_exists_unique_witness_left - 0076
exact hm_witness - 0077
exact hK_witness - 0078
have hd : ∃ d. IsGCD(d,x,n) - 0079
specialize canonical_gcd_exists x - 0080
specialize canonical_gcd_exists n - 0081
apply canonical_gcd_exists - 0082
cases hd - 0083
have he : ∃ e. IsGCD(e,x1,n) - 0084
specialize canonical_gcd_exists x1 - 0085
specialize canonical_gcd_exists n - 0086
apply canonical_gcd_exists - 0087
cases he - 0088
have hmod : ModEq(x3,u,v) - 0089
specialize IH n - 0090
specialize IH u - 0091
specialize IH v - 0092
specialize IH x - 0093
specialize IH x3 - 0094
apply IH - 0095
exact crt_prefix_lcm_exists_unique_witness_left - 0096
specialize crt_prefix_gcd_congruences_drop_last b - 0097
specialize crt_prefix_gcd_congruences_drop_last c - 0098
specialize crt_prefix_gcd_congruences_drop_last l - 0099
specialize crt_prefix_gcd_congruences_drop_last n - 0100
specialize crt_prefix_gcd_congruences_drop_last u - 0101
specialize crt_prefix_gcd_congruences_drop_last v - 0102
apply crt_prefix_gcd_congruences_drop_last - 0103
exact hp - 0104
exact hd_witness - 0105
have hlat : Dvd(x3,g) ∧ Dvd(x4,g) ∧ (∀ x. Dvd(x3,x) → Dvd(x4,x) → Dvd(g,x)) - 0106
specialize crt_gcd_lcm_distributes x - 0107
specialize crt_gcd_lcm_distributes x1 - 0108
specialize crt_gcd_lcm_distributes n - 0109
specialize crt_gcd_lcm_distributes x2 - 0110
specialize crt_gcd_lcm_distributes x3 - 0111
specialize crt_gcd_lcm_distributes x4 - 0112
specialize crt_gcd_lcm_distributes g - 0113
apply crt_gcd_lcm_distributes - 0114
exact hK_witness - 0115
exact hd_witness - 0116
exact he_witness - 0117
rewrite <- hLeq - 0118
rewrite <- hLeq - 0119
exact hg - 0120
specialize mod_eq_lcm_merge g - 0121
specialize mod_eq_lcm_merge x3 - 0122
specialize mod_eq_lcm_merge x4 - 0123
specialize mod_eq_lcm_merge u - 0124
specialize mod_eq_lcm_merge v - 0125
apply mod_eq_lcm_merge - 0126
exact hlat - 0127
exact hmod - 0128
specialize hp l - 0129
specialize hp x1 - 0130
specialize hp x4 - 0131
apply hp - 0132
specialize le_refl (S l) - 0133
apply le_refl - 0134
exact hm_witness - 0135
exact he_witness