rat-leading-index-eq-cols-of-zero-row-1
- Kind
- kernel-term
- Status
- checked
Supports: Both forms are checked, axiom-free theorems in all four rational preludes, populations pinned separately at four. The wrapper's regex is anchored on `Eq.{1} AxNat (Rat.leadingIndex x0 x1 x2) x2` -- the answer is the COLUMN COUNT, the same variable that bounds the hypothesis. A version concluding `Nat.zero` (the answer a scan that reported `nothing here` as index zero would give) would not match, and that is the confusion ADR-1554 section 3's design choice exists to avoid.
out=$(target/release/examples/kernel_declaration_projection 2>&1) && test "$(printf "%s\n" "$out" | grep -cE '^[a-z]+[[:space:]]+theorem[[:space:]]+Rat\.leadingIndex_eq_cols_of_zero_row[[:space:]]+0[[:space:]].*-> Eq\.\{1\} AxNat \(Rat\.leadingIndex x0 x1 x2\) x2\)\)\)\)$')" = 4 Evidence notes
Run 2026-09-02: four rows each, mutation-checked by `scripts/new-fact.py`. The registered test additionally asserts by reduction that `cols` and `0` are DIFFERENT answers for the all-zero row of `[[1,2,3],[0,0,5],[0,0,0]]`, so a scan reporting absence as `0` could not pass; without that check the two would be indistinguishable at a matrix whose row 0 has a leading entry at column 0.