kernel-Nat.bit_false
- Kind
- kernel-term
- Status
- checked
Supports: bit(false, n) = 2*n
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- bit_false 2>/dev/null | grep -Ec '^Nat\.bit_false[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits this theorem through the trusted `Kernel::add_declaration` gate, which re-checks the proof term against the stated type, so producing this row at all is a machine-checked proof. `Nat.bit b n` is stated `add (mul 2 n) (cond b 1 0)`; at `b = false`, `cond false 1 0` iota-reduces to `0`, and `Nat.add`'s own zero case (`add x zero ≡ x`) then collapses the sum to `mul 2 n`. The proof is `Eq.refl`; the kernel closes it by delta+iota alone, no case-split combinator and no induction. `nat_theorem_inventory` exits non-zero for a name that does not exist, and `grep -Ec` consumes the pipe and the count is tested, so the exit status depends on what the run found. `bit_false` is a substring of `bit_false_le_bit_true` too, which is why the pattern is anchored with `^Nat\.bit_false[[:space:]]` rather than a bare substring match -- verified 2026-08-28: the unanchored grep returns 2 rows for this query, the anchored one returns exactly 1.