algs-index-insertat-removeat-1
- Kind
- kernel-term
- Status
- checked
Supports: Thirteen AlgS.Index declarations (three definitions, ten theorems) admit with empty footprints, asserted only AFTER Environment::get -- a missing name also returns an empty footprint. The three definitions are checked by EVALUATION at small discriminating arguments, because the trusted gate cannot tell you a definition computes the wrong value: insertAt 2 3 id must enumerate 0, 1, 3, 2, 3, where the inserted value 3 is deliberately a value the identity family already takes so the test cannot pass by matching the wrong occurrence, and index 3 must be the shifted 2, which no shift-free or shift-by-two reading produces. Two negative controls must be REFUSED by the kernel: le_dichotomy with the induction hypothesis at succ n' instead of n', and removeAt_insertAt with the UNSHIFTED family where fun t => v (succ t) belongs.
out=$(cargo test -p axeyum-lean-kernel --lib --release -- --test-threads=4 nat_prelude::vector_space_exchange nat_prelude::vector_space_steinitz 2>&1) && test "$(printf "%s\n" "$out" | grep -cE 'test result: ok\. 18 passed; 0 failed')" -ge 1 Evidence notes
The pinned count is 18. Mutation, RUN 2026-09-06 against a 25-test baseline (filter nat_prelude::vector_space): removeAt's base case off by one, v (succ j) -> v j, killed 18 of 25; le (succ i) zero returning True instead of False killed 18 of 25. Both mutants change a Definition, which the kernel cannot object to -- the mutated removeAt still has exactly the right type -- so the kills come from the evaluation tests and from the downstream theorems whose Eq.refl stops holding.