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
∀ b. ∀ c. ∀ l. ∀ B. FiniteMatrixSelector(b,c,l,B) ∨ ¬FiniteMatrixSelector(b,c,l,B)
Every linked abbreviation expands hygienically to the identical original native formula.
Definition DAG
Actual proof prerequisites
Complete tactic proof in conservative notation
All 31 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–4
02Establish hboundL5–10
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank bounded prefix decidable.
- L5
have hbound : (∀ x. Lt(x,l) → ∃ y. BetaAt(b,c,x,y) ∧ Lt(y,B)) ∨ ¬(∀ x. Lt(x,l) → ∃ y. BetaAt(b,c,x,y) ∧ Lt(y,B))Definitions: Lt(x,l)BetaAt(b,c,x,y)Lt(y,B)Original native command in the exact edition - L6
specialize matrix_rank_bounded_prefix_decidable (b) - L7
specialize matrix_rank_bounded_prefix_decidable (c) - L8
specialize matrix_rank_bounded_prefix_decidable (l) - L9
specialize matrix_rank_bounded_prefix_decidable (B) - L10
apply matrix_rank_bounded_prefix_decidable
03Separate the logical casesL11–11
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L11
cases hbound
04Establish hinjectiveL12–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply matrix rank injective prefix decidable.
- L12
have hinjective : (∀ x. ∀ y. ∀ z. Lt(x,l) → Lt(y,l) → BetaAt(b,c,x,z) → BetaAt(b,c,y,z) → x = y) ∨ ¬(∀ x. ∀ y. ∀ z. Lt(x,l) → Lt(y,l) → BetaAt(b,c,x,z) → BetaAt(b,c,y,z) → x = y)Definitions: Lt(x,l)Lt(y,l)BetaAt(b,c,x,z)BetaAt(b,c,y,z)Original native command in the exact edition - L13
specialize matrix_rank_injective_prefix_decidable (b) - L14
specialize matrix_rank_injective_prefix_decidable (c) - L15
specialize matrix_rank_injective_prefix_decidable (l) - L16
apply matrix_rank_injective_prefix_decidable
05Separate the logical casesL17–19
06Use earlier factsL20–21
07Separate the logical casesL22–22
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L22
right
08Fix variables and assumptionsL23–23
Work with arbitrary variables or the premises of the current implication.
- L23
intro hselector
09Separate the logical casesL24–24
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L24
cases hselector
10Use earlier factsL25–26
11Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
right
12Fix variables and assumptionsL28–28
Work with arbitrary variables or the premises of the current implication.
- L28
intro hselector
13Separate the logical casesL29–29
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L29
cases hselector
Original defined command ledger · 31 lines
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro B - 0005
have hbound : (∀ x. Lt(x,l) → ∃ y. BetaAt(b,c,x,y) ∧ Lt(y,B)) ∨ ¬(∀ x. Lt(x,l) → ∃ y. BetaAt(b,c,x,y) ∧ Lt(y,B)) - 0006
specialize matrix_rank_bounded_prefix_decidable (b) - 0007
specialize matrix_rank_bounded_prefix_decidable (c) - 0008
specialize matrix_rank_bounded_prefix_decidable (l) - 0009
specialize matrix_rank_bounded_prefix_decidable (B) - 0010
apply matrix_rank_bounded_prefix_decidable - 0011
cases hbound - 0012
have hinjective : (∀ x. ∀ y. ∀ z. Lt(x,l) → Lt(y,l) → BetaAt(b,c,x,z) → BetaAt(b,c,y,z) → x = y) ∨ ¬(∀ x. ∀ y. ∀ z. Lt(x,l) → Lt(y,l) → BetaAt(b,c,x,z) → BetaAt(b,c,y,z) → x = y) - 0013
specialize matrix_rank_injective_prefix_decidable (b) - 0014
specialize matrix_rank_injective_prefix_decidable (c) - 0015
specialize matrix_rank_injective_prefix_decidable (l) - 0016
apply matrix_rank_injective_prefix_decidable - 0017
cases hinjective - 0018
left - 0019
split - 0020
exact hbound_left - 0021
exact hinjective_left - 0022
right - 0023
intro hselector - 0024
cases hselector - 0025
apply hinjective_right - 0026
exact hselector_right - 0027
right - 0028
intro hselector - 0029
cases hselector - 0030
apply hbound_right - 0031
exact hselector_left