rat-leading-index-congr-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 two regexes are anchored on the ROW INDICES: the left scan reads `x2` of `x0` and the right reads `x3` of `x1`, so a statement that had silently used the same row index on both sides -- which is what a copied congruence lemma degenerates to -- fails the check. They also pin the axiom-footprint column at `0`, which matters here because a `funext` route would not be axiom-free in this kernel.
out=$(target/release/examples/kernel_declaration_projection 2>&1) && test "$(printf "%s\n" "$out" | grep -cE '^[a-z]+[[:space:]]+theorem[[:space:]]+Rat\.leadingIndexAux_congr_row[[:space:]]+0[[:space:]].*Eq\.\{1\} AxNat \(Rat\.leadingIndexAux x0 x2 x4 x6 x7\) \(Rat\.leadingIndexAux x1 x3 x4 x6 x7\)\)\)\)\)\)\)\)\)$')" = 4 Evidence notes
Run 2026-09-02: four rows each, mutation-checked by `scripts/new-fact.py`. The registered evaluation tests are in `rat_prelude/echelon_invariant_tests.rs`: at `M = [[0,0,5],[1,2,3]]` and `N = [[9,9,9],[0,0,5]]`, which agree on `M`'s row 0 and `N`'s row 1, both leading indices reduce to 2 -- and the OTHER row of each reduces to 0, so the two matrices are shown NOT to agree everywhere and the hypothesis is doing work. The theorem is then applied at fully free arguments with a control that refuses the version whose right-hand row index is `r` rather than `r'`.