Identifier
F:rat-det-row-selection-injective
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

For every natural m, every matrix B : Nat -> Nat -> Rat and every index map g : Nat -> Nat that is injective on [0, m+1) and sends it into itself, det (fun r c => B (g r) c) (m+1) = det (fun r c => matId (g r) c) (m+1) * det B (m+1). Proved by a cursor induction on how many trailing positions of [0, m+1) the map g already fixes, with the dimension and B outside the induction and g inside it. The base case makes g the identity on [0, m+1) and nothing outside it, which is why it needs the ROW-BOUNDED determinant congruence Rat.det_congr_lt rather than the unrestricted Rat.det_congr. The step splits on whether the cursor is below the dimension; below it, the finite pigeonhole principle Nat.injective_on_imp_surjective_on produces a preimage w of the cursor, and when w is strictly below the cursor the map is composed with Nat.transposition w cursor, whose effect on the determinant is one sign by Rat.det_row_swap, cancelled by Rat.neg_mul and two applications of Rat.neg_neg.

Formal statement
theorem Rat.det_row_selection_injective : ((x0 : AxNat) -> ((x1 : ((x1 : AxNat) -> ((x2 : AxNat) -> Rat))) -> ((x2 : ((x2 : AxNat) -> AxNat)) -> ((x3 : AxNat.injectiveOn x2 (AxNat.succ x0)) -> ((x4 : AxNat.mapsInto x2 (AxNat.succ x0)) -> Eq.{1} Rat (Rat.det (fun (x5 : AxNat) => fun (x6 : AxNat) => x1 (x2 x5) x6) (AxNat.succ x0)) (Rat.mul (Rat.det (fun (x5 : AxNat) => fun (x6 : AxNat) => Rat.matId (x2 x5) x6) (AxNat.succ x0)) (Rat.det x1 (AxNat.succ x0))))))))

Dependencies

The graph shows direct ledger edges. Follow a node to open its artifact page.

Direct dependencies appear to the left. The current fact is in the center. Facts that depend directly on it appear to the right. Rat.det_alternating: the determ [generated] kernel theorem Nat. [generated] kernel theorem Nat. Mathlib v4.30 source propositio Mathlib v4.30 source propositio [generated] kernel theorem Nat. [generated] kernel theorem Nat. [generated] kernel theorem Nat. Current fact The selection lemma over the co
19 direct dependencies 1 direct dependents Graph shows the first 8 on each side.

Evidence

kernel-Rat.det_row_selection_injective

Kind
kernel-term
Status
checked

Supports: `Rat.det_row_selection_injective` is in the environment as a checked `Declaration::Theorem` with an EMPTY `Kernel::axiom_footprint`, and the row printed carries both. The `formal.statement` above is the row's `canonical_type`, i.e. `Kernel::render_lean` of the admitted type.

Checker command
scripts/cargo-serialized.sh run --release -q -p axeyum-lean-kernel --example kernel_declaration_projection -- --require-declaration Rat.det_row_selection_injective --require-kind theorem
Evidence notes

Run 2026-09-02: prints `found\trat\ttheorem\tRat.det_row_selection_injective\t0` and exits 0. `--require-declaration` exits 1 when no prelude declares that exact display name.

suite-Rat.det_row_selection_injective

Kind
kernel-term
Status
checked

Supports: `rat_prelude_tests::the_determinant_toolkit_is_axiom_free` names `det_row_selection_injective` in its targeted list and checks kind and footprint from `kernel.environment()` -- a second, independent route to the same two properties.

Checker command
test "$(scripts/cargo-serialized.sh test --release -p axeyum-lean-kernel --lib rat_prelude::rat_prelude_tests::the_determinant_toolkit_is_axiom_free -- --exact 2>&1 | /usr/bin/grep -Ec 'test result: ok\. 1 passed; 0 failed')" -ge 1
Evidence notes

Run 2026-09-02: `test result: ok. 1 passed; 0 failed`.

Provenance

{
  "date": "2026-09-02",
  "established_by": "axeyum-lean-kernel build_rat_prelude (crates/axeyum-lean-kernel/src/rat_prelude/matrix_det_mul.rs)",
  "source": "Lane det-mul-general-n, closing ADR-1440's obligation 2 (the selection lemma) on the way to determinant multiplicativity at symbolic n. Status note: docs/plan/status/det-mul-general-n.md."
}