DL003E

matrix_rank_selector_dimension_bound

Every actual distinct selector has length at most its matrix-coordinate bound, by constructive finite pigeonhole.

Alpha v34 checked-use · first admitted v27 · independently kernel and Lean verified; not Stable

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)Le(l,B)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

le_or_lt · checked external prerequisitefinite_bounded_into_oversized_not_injective · checked external prerequisite
Original expanded first-order statement
forall b c l B. (((forall fom_index_mrf_selector_dimensionbound. (exists fom_gap_mrf_selector_dimensionbound_index_bound. fom_gap_mrf_selector_dimensionbound_index_bound + S (fom_index_mrf_selector_dimensionbound) = l) -> exists fom_value_mrf_selector_dimensionbound. ((((exists fom_beta_height_mrf_selector_dimensionbound_entry. fom_beta_height_mrf_selector_dimensionbound_entry + S (fom_value_mrf_selector_dimensionbound) = S ((S (fom_index_mrf_selector_dimensionbound)) * c)) /\ exists fom_beta_quotient_mrf_selector_dimensionbound_entry. b = fom_beta_quotient_mrf_selector_dimensionbound_entry * S ((S (fom_index_mrf_selector_dimensionbound)) * c) + (fom_value_mrf_selector_dimensionbound))) /\ (exists fom_gap_mrf_selector_dimensionbound_value_bound. fom_gap_mrf_selector_dimensionbound_value_bound + S (fom_value_mrf_selector_dimensionbound) = B))) /\ (forall mdr_i_selector_dimensiondistinct mdr_j_selector_dimensiondistinct mdr_a_selector_dimensiondistinct. (exists mdr_gap_selector_dimensiondistincti. mdr_gap_selector_dimensiondistincti + S (mdr_i_selector_dimensiondistinct) = (l)) -> (exists mdr_gap_selector_dimensiondistinctj. mdr_gap_selector_dimensiondistinctj + S (mdr_j_selector_dimensiondistinct) = (l)) -> (((exists ff_h_mdr_selector_dimensiondistinctfirst. ff_h_mdr_selector_dimensiondistinctfirst + S (mdr_a_selector_dimensiondistinct) = S ((S (mdr_i_selector_dimensiondistinct)) * c)) /\ exists ff_q_mdr_selector_dimensiondistinctfirst. b = ff_q_mdr_selector_dimensiondistinctfirst * S ((S (mdr_i_selector_dimensiondistinct)) * c) + (mdr_a_selector_dimensiondistinct))) -> (((exists ff_h_mdr_selector_dimensiondistinctsecond. ff_h_mdr_selector_dimensiondistinctsecond + S (mdr_a_selector_dimensiondistinct) = S ((S (mdr_j_selector_dimensiondistinct)) * c)) /\ exists ff_q_mdr_selector_dimensiondistinctsecond. b = ff_q_mdr_selector_dimensiondistinctsecond * S ((S (mdr_j_selector_dimensiondistinct)) * c) + (mdr_a_selector_dimensiondistinct))) -> mdr_i_selector_dimensiondistinct = mdr_j_selector_dimensiondistinct))) -> (exists mdr_gap_selector_size. mdr_gap_selector_size + (l) = (B))

Complete tactic proof in conservative notation

All 21 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

21 script commands · 7 reading checkpoints · 1 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

01Fix variables and assumptionsL1–5

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro l
  4. L4
    intro B
  5. L5
    intro hselector
02Separate the logical casesL6–6

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L6
    cases hselector
03Establish horderL7–10

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply le or lt.

  1. L7
    have horder : Le(l,B) ∨ Lt(B,l)Definitions: Le(l,B)Lt(B,l)Original native command in the exact edition
  2. L8
    specialize le_or_lt (l)
  3. L9
    specialize le_or_lt (B)
  4. L10
    apply le_or_lt
04Separate the logical casesL11–11

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L11
    cases horder
05Use earlier factsL12–12

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L12
    exact horder_left
06Separate the logical casesL13–13

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L13
    exfalso
07Use earlier factsL14–21

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L14
    specialize finite_bounded_into_oversized_not_injective (b)
  2. L15
    specialize finite_bounded_into_oversized_not_injective (c)
  3. L16
    specialize finite_bounded_into_oversized_not_injective (l)
  4. L17
    specialize finite_bounded_into_oversized_not_injective (B)
  5. L18
    apply finite_bounded_into_oversized_not_injective
  6. L19
    exact hselector_left
  7. L20
    exact horder_right
  8. L21
    exact hselector_right

Library-wide reading audit

Original defined command ledger · 21 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro l
  4. 0004intro B
  5. 0005intro hselector
  6. 0006cases hselector
  7. 0007have horder : Le(l,B)Lt(B,l)
  8. 0008specialize le_or_lt (l)
  9. 0009specialize le_or_lt (B)
  10. 0010apply le_or_lt
  11. 0011cases horder
  12. 0012exact horder_left
  13. 0013exfalso
  14. 0014specialize finite_bounded_into_oversized_not_injective (b)
  15. 0015specialize finite_bounded_into_oversized_not_injective (c)
  16. 0016specialize finite_bounded_into_oversized_not_injective (l)
  17. 0017specialize finite_bounded_into_oversized_not_injective (B)
  18. 0018apply finite_bounded_into_oversized_not_injective
  19. 0019exact hselector_left
  20. 0020exact horder_right
  21. 0021exact hselector_right