kernel-Int.induction_on
- Kind
- kernel-term
- Status
- checked
Supports: Int.induction_on is admitted by the trusted kernel gate with the type recorded in formal.statement.
cargo run -q --release -p axeyum-lean-kernel --example int_theorem_inventory -- induction_on 2>/dev/null | grep -cE '^theorem[[:space:]]+Int\.induction_on[[:space:]]+\(\(x0 : \(\(x0 : Int\) -> Prop\)\) -> \(\(x1 : x0 Int\.zero\) -> \(\(x2 : \(\(x2 : Int\) -> \(\(x3 : x0 x2\) -> x0 \(Int\.add x2 Int\.one\)\)\)\) -> \(\(x3 : \(\(x3 : Int\) -> \(\(x4 : x0 x3\) -> x0 \(Int\.sub x3 Int\.one\)\)\)\) -> \(\(x4 : Int\) -> x0 x4\)\)\)\)\)$' Evidence notes
The pattern pins the entire rendered type, so a combinator that quietly lost the downward step (or stepped the same direction twice) would not match. Verified discriminating on this tree: 1 against the real row, 0 against a row with Int.sub rewritten to Int.add. Tab separators are matched with [[:space:]] and never with a backslash-t escape -- see this repository's documented GNU-grep/ugrep divergence, which silently made 68 checker commands match nothing. --release is MANDATORY: this binary also builds creal/complex/cpoint, which overflow the default debug thread stack, and a debug run's empty output would read as ABSENT.