real-inverse-no-total-inverse
- Kind
- kernel-term
- Status
- checked
Supports: CReal.no_total_inverse is a checked Theorem -- not an axiom, not an opaque -- with an empty footprint, and the witness example's EXIT STATUS depends on its presence.
out=$(cargo run -q --release -p axeyum-lean-kernel --example creal_setoid_witness 2>&1) && test "$(printf '%s\n' "$out" | grep -cE 'no total inverse exists = true')" = 1 && test "$(printf '%s\n' "$out" | grep -cE '[0-9]+ declarations admitted, trusted surface = 0 \(empty\)')" = 1 Evidence notes
Two anchors on one run: the guard flag, and the declaration count (76 at the time of writing; a slice that adds declarations bumps it deliberately) with the trusted surface on the same line. Deleting declare_no_total_inverse flips the example to exit 1 with a matching FAIL line and kills exactly two tests (measured); the count anchor stops the row surviving a build that quietly dropped declarations. The declaration COUNT is deliberately not pinned. It was `76`, and the lattice work (`4c7af898d`) took the same witness to `94` without touching anything this fact claims -- so a fact about the INVERSE was red because of a lemma about `max`. A total that every lane increments is not an anchor for a fact about one declaration. What is pinned is `trusted surface = 0 (empty)`, which is the invariant, plus the floor below. `--release` is not a preference. In debug this witness runs ~19 minutes -- it computes `axiom_footprint` per declaration over 94 of them -- and `scripts/check-fact-evidence-replay.sh` budgets 120 s per row, so the debug form made this evidence structurally unreplayable and the gate recorded it as a TIMEOUT rather than a result. Release is ~12x on this crate, measured.