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 g r t. (exists lcc_gap_progression_remainder. lcc_gap_progression_remainder+S (r)=(M)) -> ((((exists lcc_gap_progression_small. lcc_gap_progression_small+S (r+M*t)=(g*M)) -> (exists lcc_gap_progression_index. lcc_gap_progression_index+S (t)=(g))) /\ (((exists lcc_gap_progression_index. lcc_gap_progression_index+S (t)=(g)) -> (exists lcc_gap_progression_small. lcc_gap_progression_small+S (r+M*t)=(g*M))))))Constructive proof overview
Generated structural guide
With an actual remainder r<M, r+M*t is below g*M exactly when t<g; no field or coprimality hypothesis is used.
The unchanged tactic script uses 11 declared prerequisites and contains 62 exact native proof lines.
Alpha v34 checked-use · first admitted v34 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
le_or_lt Alpha theorem; checked-use authorized lt_not_le Alpha theorem; checked-use authorized le_trans Alpha theorem; checked-use authorized mul_le_mul_right Alpha theorem; checked-use authorized mul_comm Alpha theorem; checked-use authorized le_add_left Alpha theorem; checked-use authorized finite_add_lt_of_lt_of_le Alpha theorem; checked-use authorized le_refl Alpha theorem; checked-use authorized add_comm Alpha theorem; checked-use authorized mul_succ_left Alpha theorem; checked-use authorized lt_of_lt_of_le Alpha 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–5
02Separate the logical casesL6–6
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L6
split
03Fix variables and assumptionsL7–7
Work with arbitrary variables or the premises of the current implication.
- L7
intro hb
04Establish hoL8–11
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le or lt.
05Separate the logical casesL12–13
06Use earlier factsL14–23
Instantiate or apply named facts and discharge the corresponding proof obligations.
07Use earlier factsL24–26
08Establish heL27–34
09Establish hsL35–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite add lt of lt of le.
- L35
have hs : exists lcc_gap_progression_next. lcc_gap_progression_next+S (r+M*t)=(M+M*t) - L36
specialize finite_add_lt_of_lt_of_le (r) - L37
specialize finite_add_lt_of_lt_of_le (M) - L38
specialize finite_add_lt_of_lt_of_le (M*t) - L39
specialize finite_add_lt_of_lt_of_le (M*t) - L40
apply finite_add_lt_of_lt_of_le - L41
exact hr - L42
apply le_refl
10Establish heL43–52
11Use earlier factsL53–56
12Calculate and transport equalitiesL57–57
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L57
rewrite he
Original exact command ledger · 62 lines
- 0001
intro M - 0002
intro g - 0003
intro r - 0004
intro t - 0005
intro hr - 0006
split - 0007
intro hb - 0008
have ho : (exists lcc_gap_progression_order. lcc_gap_progression_order+(g)=(t)) \/ (exists lcc_gap_progression_index. lcc_gap_progression_index+S (t)=(g)) - 0009
specialize le_or_lt (g) - 0010
specialize le_or_lt (t) - 0011
apply le_or_lt - 0012
cases ho - 0013
exfalso - 0014
specialize lt_not_le (r+M*t) - 0015
specialize lt_not_le (g*M) - 0016
apply lt_not_le - 0017
exact hb - 0018
specialize le_trans (g*M) - 0019
specialize le_trans (t*M) - 0020
specialize le_trans (r+M*t) - 0021
apply le_trans - 0022
specialize mul_le_mul_right (g) - 0023
specialize mul_le_mul_right (t) - 0024
specialize mul_le_mul_right (M) - 0025
apply mul_le_mul_right - 0026
exact ho_left - 0027
have he : t*M=M*t - 0028
apply mul_comm - 0029
rewrite he - 0030
specialize le_add_left (M*t) - 0031
specialize le_add_left (r) - 0032
apply le_add_left - 0033
exact ho_right - 0034
intro ht - 0035
have hs : exists lcc_gap_progression_next. lcc_gap_progression_next+S (r+M*t)=(M+M*t) - 0036
specialize finite_add_lt_of_lt_of_le (r) - 0037
specialize finite_add_lt_of_lt_of_le (M) - 0038
specialize finite_add_lt_of_lt_of_le (M*t) - 0039
specialize finite_add_lt_of_lt_of_le (M*t) - 0040
apply finite_add_lt_of_lt_of_le - 0041
exact hr - 0042
apply le_refl - 0043
have he : M+M*t=S t*M - 0044
trans M*t+M - 0045
apply add_comm - 0046
trans t*M+M - 0047
congr - 0048
apply mul_comm - 0049
refl - 0050
symm - 0051
apply mul_succ_left - 0052
specialize lt_of_lt_of_le (r+M*t) - 0053
specialize lt_of_lt_of_le (M+M*t) - 0054
specialize lt_of_lt_of_le (g*M) - 0055
apply lt_of_lt_of_le - 0056
exact hs - 0057
rewrite he - 0058
specialize mul_le_mul_right (S t) - 0059
specialize mul_le_mul_right (g) - 0060
specialize mul_le_mul_right (M) - 0061
apply mul_le_mul_right - 0062
exact ht