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.
This branch proves the finite determinant/rank/span substrate. It does not claim Smith or Hermite normal form, lattice index equals determinant, determinant multiplicativity, lattice reduction, or geometry-of-numbers theorems.
Exact theorem in conservative defined notation
∀ k. ∀ B. ∀ c. ∀ T. ∀ b. ∀ e. Le(B,c) → (∀ x. (∃ y. S x + S y = S k) → ∃ y. c = S x · y) → ¬T = 0 → (∀ x. Lt(x,k) → ∃ y. T = S (S x · c) · y) → (∀ x. Lt(x,k) → ∃ y. BetaAt(b,e,x,y) ∧ Lt(y,B)) → ∃ x. Lt(x,T) ∧ (∀ y. ∀ z. Lt(y,k) → BetaAt(b,e,y,z) → BetaAt(x,c,y,z))
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 98 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–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hbounded
03Establish hcodesL12–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank recode congruences exists.
- L12
have hcodes : ∃ z. ∀ x. ∀ y. Lt(x,k) → BetaAt(b,e,x,y) → ∃ n. ∃ m. z + S (S x · c) · n = y + S (S x · c) · mDefinitions: Lt(x,k)BetaAt(b,e,x,y)Original native command in the exact edition - L13
specialize matrix_rank_recode_congruences_exists (k) - L14
specialize matrix_rank_recode_congruences_exists (c) - L15
specialize matrix_rank_recode_congruences_exists (b) - L16
specialize matrix_rank_recode_congruences_exists (e) - L17
apply matrix_rank_recode_congruences_exists - L18
exact hcommon
04Separate the logical casesL19–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L19
cases hcodes
05Establish hdivisionL20–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder exists.
06Separate the logical casesL25–27
07Establish hcommuteL28–30
08Establish hremainderL31–37
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply remainder decomposition to mod eq.
- L31
have hremainder : exists mdr_u_fixed_remainder mdr_v_fixed_remainder. (x) + (T) * mdr_u_fixed_remainder = (x2) + (T) * mdr_v_fixed_remainder - L32
specialize remainder_decomposition_to_mod_eq (T) - L33
specialize remainder_decomposition_to_mod_eq (x) - L34
specialize remainder_decomposition_to_mod_eq (x1) - L35
specialize remainder_decomposition_to_mod_eq (x2) - L36
apply remainder_decomposition_to_mod_eq - L37
exact hdivision_witness_witness_left
09Construct an explicit witnessL38–38
Supply the displayed value, then prove that it has the required property.
- L38
exists x2
10Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
split
11Use earlier factsL40–40
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L40
exact hdivision_witness_witness_right
12Fix variables and assumptionsL41–44
13Establish hvalueL45–54
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix value.
- L45
- L46
specialize matrix_rank_bounded_prefix_value (b) - L47
specialize matrix_rank_bounded_prefix_value (e) - L48
specialize matrix_rank_bounded_prefix_value (k) - L49
specialize matrix_rank_bounded_prefix_value (B) - L50
specialize matrix_rank_bounded_prefix_value (i) - L51
specialize matrix_rank_bounded_prefix_value (a) - L52
apply matrix_rank_bounded_prefix_value - L53
exact hbounded - L54
exact hi
14Use earlier factsL55–55
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L55
exact ha
15Establish hmodboundL56–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le trans.
- L56
have hmodbound : Le(B,S (S i · c))Definitions: Le(B,S (S i · c))Original native command in the exact edition - L57
specialize le_trans (B) - L58
specialize le_trans (c) - L59
specialize le_trans (S ((S i) * c)) - L60
apply le_trans - L61
exact hscale - L62
specialize base_le_beta_modulus (c) - L63
specialize base_le_beta_modulus (i) - L64
apply base_le_beta_modulus - L65
specialize beta_at_of_mod_eq_bound (x2)
16Use earlier factsL66–75
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L66
specialize beta_at_of_mod_eq_bound (c) - L67
specialize beta_at_of_mod_eq_bound (i) - L68
specialize beta_at_of_mod_eq_bound (a) - L69
apply beta_at_of_mod_eq_bound - L70
specialize lt_of_lt_of_le (a) - L71
specialize lt_of_lt_of_le (B) - L72
specialize lt_of_lt_of_le (S ((S i) * c)) - L73
apply lt_of_lt_of_le - L74
exact hvalue - L75
exact hmodbound
17Use earlier factsL76–85
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
specialize mod_eq_trans (S ((S i) * c)) - L77
specialize mod_eq_trans (x2) - L78
specialize mod_eq_trans (x) - L79
specialize mod_eq_trans (a) - L80
apply mod_eq_trans - L81
specialize mod_eq_symm (S ((S i) * c)) - L82
specialize mod_eq_symm (x) - L83
specialize mod_eq_symm (x2) - L84
apply mod_eq_symm - L85
specialize mod_eq_of_mod_eq_multiple (S ((S i) * c))
18Use earlier factsL86–95
Instantiate or apply named facts and discharge the corresponding proof obligations.
Original defined command ledger · 98 lines
- 0001
intro k - 0002
intro B - 0003
intro c - 0004
intro T - 0005
intro b - 0006
intro e - 0007
intro hscale - 0008
intro hcommon - 0009
intro hT - 0010
intro hmoduli - 0011
intro hbounded - 0012
have hcodes : ∃ z. ∀ x. ∀ y. Lt(x,k) → BetaAt(b,e,x,y) → ∃ n. ∃ m. z + S (S x · c) · n = y + S (S x · c) · m - 0013
specialize matrix_rank_recode_congruences_exists (k) - 0014
specialize matrix_rank_recode_congruences_exists (c) - 0015
specialize matrix_rank_recode_congruences_exists (b) - 0016
specialize matrix_rank_recode_congruences_exists (e) - 0017
apply matrix_rank_recode_congruences_exists - 0018
exact hcommon - 0019
cases hcodes - 0020
have hdivision : ∃ q. ∃ r. x = T · q + r ∧ Lt(r,T) - 0021
specialize division_remainder_exists (T) - 0022
specialize division_remainder_exists (x) - 0023
apply division_remainder_exists - 0024
exact hT - 0025
cases hdivision - 0026
cases hdivision_witness - 0027
cases hdivision_witness_witness - 0028
have hcommute : T * x1 = x1 * T - 0029
apply mul_comm - 0030
rewrite hcommute at hdivision_witness_witness_left - 0031
have hremainder : exists mdr_u_fixed_remainder mdr_v_fixed_remainder. (x) + (T) * mdr_u_fixed_remainder = (x2) + (T) * mdr_v_fixed_remainder - 0032
specialize remainder_decomposition_to_mod_eq (T) - 0033
specialize remainder_decomposition_to_mod_eq (x) - 0034
specialize remainder_decomposition_to_mod_eq (x1) - 0035
specialize remainder_decomposition_to_mod_eq (x2) - 0036
apply remainder_decomposition_to_mod_eq - 0037
exact hdivision_witness_witness_left - 0038
exists x2 - 0039
split - 0040
exact hdivision_witness_witness_right - 0041
intro i - 0042
intro a - 0043
intro hi - 0044
intro ha - 0045
have hvalue : Lt(a,B) - 0046
specialize matrix_rank_bounded_prefix_value (b) - 0047
specialize matrix_rank_bounded_prefix_value (e) - 0048
specialize matrix_rank_bounded_prefix_value (k) - 0049
specialize matrix_rank_bounded_prefix_value (B) - 0050
specialize matrix_rank_bounded_prefix_value (i) - 0051
specialize matrix_rank_bounded_prefix_value (a) - 0052
apply matrix_rank_bounded_prefix_value - 0053
exact hbounded - 0054
exact hi - 0055
exact ha - 0056
have hmodbound : Le(B,S (S i · c)) - 0057
specialize le_trans (B) - 0058
specialize le_trans (c) - 0059
specialize le_trans (S ((S i) * c)) - 0060
apply le_trans - 0061
exact hscale - 0062
specialize base_le_beta_modulus (c) - 0063
specialize base_le_beta_modulus (i) - 0064
apply base_le_beta_modulus - 0065
specialize beta_at_of_mod_eq_bound (x2) - 0066
specialize beta_at_of_mod_eq_bound (c) - 0067
specialize beta_at_of_mod_eq_bound (i) - 0068
specialize beta_at_of_mod_eq_bound (a) - 0069
apply beta_at_of_mod_eq_bound - 0070
specialize lt_of_lt_of_le (a) - 0071
specialize lt_of_lt_of_le (B) - 0072
specialize lt_of_lt_of_le (S ((S i) * c)) - 0073
apply lt_of_lt_of_le - 0074
exact hvalue - 0075
exact hmodbound - 0076
specialize mod_eq_trans (S ((S i) * c)) - 0077
specialize mod_eq_trans (x2) - 0078
specialize mod_eq_trans (x) - 0079
specialize mod_eq_trans (a) - 0080
apply mod_eq_trans - 0081
specialize mod_eq_symm (S ((S i) * c)) - 0082
specialize mod_eq_symm (x) - 0083
specialize mod_eq_symm (x2) - 0084
apply mod_eq_symm - 0085
specialize mod_eq_of_mod_eq_multiple (S ((S i) * c)) - 0086
specialize mod_eq_of_mod_eq_multiple (T) - 0087
specialize mod_eq_of_mod_eq_multiple (x) - 0088
specialize mod_eq_of_mod_eq_multiple (x2) - 0089
apply mod_eq_of_mod_eq_multiple - 0090
specialize hmoduli (i) - 0091
apply hmoduli - 0092
exact hi - 0093
exact hremainder - 0094
specialize hcodes_witness (i) - 0095
specialize hcodes_witness (a) - 0096
apply hcodes_witness - 0097
exact hi - 0098
exact ha