Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Each statement retains its explicit modulus, coprimality and divisibility assumptions. These twelve arithmetic laws do not assert all order, primitive-root, Carmichael, exponential or simultaneous-polynomial congruence goals are finished.
Exact theorem in conservative defined notation
∀ M. ∀ g. ∀ r. ∀ x. Lt(r,M) → (Lt(x,g · M) ∧ ModEq(M,x,r) → ∃ y. Lt(y,g) ∧ x = r + M · y) ∧ ((∃ y. Lt(y,g) ∧ x = r + M · y) → Lt(x,g · M) ∧ ModEq(M,x,r))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 78 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 (1)
01Fix variables and assumptionsL1–5
02Establish hM0L6–7
03Establish hbadL8–10
Establish this local claim before using it. It is not an additional assumption.
04Establish hsL11–17
05Separate the logical casesL18–18
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L18
split
06Fix variables and assumptionsL19–19
Work with arbitrary variables or the premises of the current implication.
- L19
intro h
07Separate the logical casesL20–20
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L20
cases h
08Establish hqL21–28
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq to remainder decomposition.
09Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hq
10Establish heL30–37
11Construct an explicit witnessL38–38
Supply the displayed value, then prove that it has the required property.
- L38
exists x1
12Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
split
13Establish hcL40–46
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply linear congruence progression bound iff.
- L40
have hc : (Lt(r + M · x1,g · M) → Lt(x1,g)) ∧ (Lt(x1,g) → Lt(r + M · x1,g · M))Definitions: Lt(r + M · x1,g · M)Lt(x1,g)Original native command in the exact edition - L41
specialize linear_congruence_progression_bound_iff (M) - L42
specialize linear_congruence_progression_bound_iff (g) - L43
specialize linear_congruence_progression_bound_iff (r) - L44
specialize linear_congruence_progression_bound_iff (x1) - L45
apply linear_congruence_progression_bound_iff - L46
exact hr
14Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
cases hc
15Use earlier factsL48–48
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L48
apply hc_left
16Calculate and transport equalitiesL49–49
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L49
rewrite <- he
17Use earlier factsL50–51
18Fix variables and assumptionsL52–52
Work with arbitrary variables or the premises of the current implication.
- L52
intro h
19Separate the logical casesL53–55
20Calculate and transport equalitiesL56–56
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L56
rewrite h_witness_right
21Establish hcL57–63
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply linear congruence progression bound iff.
- L57
have hc : (Lt(r + M · x1,g · M) → Lt(x1,g)) ∧ (Lt(x1,g) → Lt(r + M · x1,g · M))Definitions: Lt(r + M · x1,g · M)Lt(x1,g)Original native command in the exact edition - L58
specialize linear_congruence_progression_bound_iff (M) - L59
specialize linear_congruence_progression_bound_iff (g) - L60
specialize linear_congruence_progression_bound_iff (r) - L61
specialize linear_congruence_progression_bound_iff (x1) - L62
apply linear_congruence_progression_bound_iff - L63
exact hr
22Separate the logical casesL64–64
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L64
cases hc
23Use earlier factsL65–71
Instantiate or apply named facts and discharge the corresponding proof obligations.
24Calculate and transport equalitiesL72–72
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L72
trans r+M*x1
25Use earlier factsL73–73
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L73
exact h_witness_right
26Calculate and transport equalitiesL74–74
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L74
trans M*x1+r
27Use earlier factsL75–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L75
apply add_comm
28Calculate and transport equalitiesL76–76
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L76
congr
29Use earlier factsL77–77
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L77
apply mul_comm
30Calculate and transport equalitiesL78–78
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L78
refl
Original defined command ledger · 78 lines
- 0001
intro M - 0002
intro g - 0003
intro r - 0004
intro x - 0005
intro hr - 0006
have hM0 : ~(M=0) - 0007
intro hz - 0008
have hbad : Lt(r,0) - 0009
rewrite <- hz - 0010
exact hr - 0011
have hs : S r=0 - 0012
specialize le_zero (S r) - 0013
apply le_zero - 0014
exact hbad - 0015
specialize succ_ne_zero r - 0016
apply succ_ne_zero - 0017
exact hs - 0018
split - 0019
intro h - 0020
cases h - 0021
have hq : exists q. x=q*M+r - 0022
specialize mod_eq_to_remainder_decomposition (M) - 0023
specialize mod_eq_to_remainder_decomposition (x) - 0024
specialize mod_eq_to_remainder_decomposition (r) - 0025
apply mod_eq_to_remainder_decomposition - 0026
exact hM0 - 0027
exact hr - 0028
exact h_right - 0029
cases hq - 0030
have he : x=r+M*x1 - 0031
trans x1*M+r - 0032
exact hq_witness - 0033
trans r+x1*M - 0034
apply add_comm - 0035
congr - 0036
refl - 0037
apply mul_comm - 0038
exists x1 - 0039
split - 0040
have hc : (Lt(r + M · x1,g · M) → Lt(x1,g)) ∧ (Lt(x1,g) → Lt(r + M · x1,g · M)) - 0041
specialize linear_congruence_progression_bound_iff (M) - 0042
specialize linear_congruence_progression_bound_iff (g) - 0043
specialize linear_congruence_progression_bound_iff (r) - 0044
specialize linear_congruence_progression_bound_iff (x1) - 0045
apply linear_congruence_progression_bound_iff - 0046
exact hr - 0047
cases hc - 0048
apply hc_left - 0049
rewrite <- he - 0050
exact h_left - 0051
exact he - 0052
intro h - 0053
cases h - 0054
cases h_witness - 0055
split - 0056
rewrite h_witness_right - 0057
have hc : (Lt(r + M · x1,g · M) → Lt(x1,g)) ∧ (Lt(x1,g) → Lt(r + M · x1,g · M)) - 0058
specialize linear_congruence_progression_bound_iff (M) - 0059
specialize linear_congruence_progression_bound_iff (g) - 0060
specialize linear_congruence_progression_bound_iff (r) - 0061
specialize linear_congruence_progression_bound_iff (x1) - 0062
apply linear_congruence_progression_bound_iff - 0063
exact hr - 0064
cases hc - 0065
apply hc_right - 0066
exact h_witness_left - 0067
specialize remainder_decomposition_to_mod_eq (M) - 0068
specialize remainder_decomposition_to_mod_eq (x) - 0069
specialize remainder_decomposition_to_mod_eq (x1) - 0070
specialize remainder_decomposition_to_mod_eq (r) - 0071
apply remainder_decomposition_to_mod_eq - 0072
trans r+M*x1 - 0073
exact h_witness_right - 0074
trans M*x1+r - 0075
apply add_comm - 0076
congr - 0077
apply mul_comm - 0078
refl