nat-lt-of-ble-eq-false-1
- Kind
- kernel-term
- Status
- checked
Supports: `Nat.lt_of_ble_eq_false` is a checked `Declaration::Theorem` with an EMPTY axiom footprint in all EIGHT preludes that reach `Nat`, and the checker requires exactly eight rows, so losing it from any one of them changes the count and the command exits 1. The regex is anchored on the CONCLUSION `AxNat.lt x1 x0`, which is the whole content of the promotion: the non-strict twin `AxNat.le x1 x0` (which two existing consumers already had) would not match, and neither would the transposed `AxNat.lt x0 x1`. The hypothesis `Eq.{1} Bool (AxNat.ble x0 x1) Bool.false` is pinned in the same line, so a version taking `Bool.true` fails too.
out=$(target/release/examples/kernel_declaration_projection 2>&1) && test "$(printf "%s\n" "$out" | grep -cE '^[a-z]+[[:space:]]+theorem[[:space:]]+Nat\.lt_of_ble_eq_false[[:space:]]+0[[:space:]].*\(AxNat\.ble x0 x1\) Bool\.false\) -> AxNat\.lt x1 x0\)\)\)$')" = 8 Evidence notes
Run 2026-09-02: exactly eight rows match. `scripts/new-fact.py` verified the pattern FAILS on mutated output (digits perturbed, true -> false, 0 -> 1) before this file was written. The anchor is the conclusion rather than the name because the name would not change if someone weakened `Lt` to `Le`.