rat-row-swap-preserves-zero-range-1
- Kind
- kernel-term
- Status
- checked
Supports: A checked, axiom-free theorem in all four rational preludes, population pinned at four so a row disappearing from one prelude fails the check rather than passing on the survivors. The regex is anchored on `Rat.rowSwap x1 x2 x0 x8 x4` -- the conclusion is about the SWAPPED matrix, not `x0 x8 x4`, which is the hypothesis restated and is what a proof that forgot to apply the swap would give. It also pins the axiom-footprint column at `0`.
out=$(target/release/examples/kernel_declaration_projection 2>&1) && test "$(printf "%s\n" "$out" | grep -cE '^[a-z]+[[:space:]]+theorem[[:space:]]+Rat\.rowSwap_preserves_zero_range[[:space:]]+0[[:space:]].*-> Eq\.\{1\} Rat \(Rat\.rowSwap x1 x2 x0 x8 x4\) Rat\.zero\)\)\)\)\)\)\)\)\)\)\)$')" = 4 Evidence notes
Run 2026-09-02: four rows, mutation-checked by `scripts/new-fact.py` (the pattern matches the real output and fails on every mutation of it). The registered evaluation tests are `rat_prelude/echelon_invariant_tests.rs`: the swap is reduced at `[[1,2],[0,3],[0,4]]` with a control at every entry, the theorem is instantiated at CONCRETE `pr = 1`, `piv = 2`, `rows = 3`, `k = 0`, `s = 1` with both order hypotheses discharged by `Nat.le_of_ble_eq_true` at `Eq.refl`, and it is applied at fully free arguments with a control refusing the unswapped statement. Two further tests DROP one hypothesis each and exhibit a matrix where the conclusion is false by reduction: `[[0,9],[0,9],[5,9]]` with `rows = 2` and `piv = 2` (no `Lt piv rows`) puts 5 at (0,0), and `[[7,9],[0,9],[0,9]]` with `pr = 1` and `piv = 0` (no `Le pr piv`) puts 7 at (1,0). So neither hypothesis is decoration.