kernel-Int.fib_add
- Kind
- kernel-term
- Status
- checked
Supports: Int.fib_add is admitted by the trusted kernel gate, and its canonical type is the pinned Mathlib statement symbol for symbol: ((x0 : Int) -> ((x1 : Int) -> Eq.{1} Int (Int.fib (Int.add x0 x1)) (Int.add (Int.mul (Int.fib (Int.sub x0 Int.one)) (Int.fib x1)) (Int.mul (Int.fib x0) (Int.fib (Int.add x1 Int.one)))))).
cargo run -q --release -p axeyum-lean-kernel --example int_theorem_inventory -- fib_add 2>/dev/null | grep -cE '^theorem[[:space:]]+Int\.fib_add[[:space:]]+\(\(x0 : Int\) -> \(\(x1 : Int\) -> Eq\.\{1\} Int \(Int\.fib \(Int\.add x0 x1\)\) \(Int\.add \(Int\.mul \(Int\.fib \(Int\.sub x0 Int\.one\)\) \(Int\.fib x1\)\) \(Int\.mul \(Int\.fib x0\) \(Int\.fib \(Int\.add x1 Int\.one\)\)\)\)\)\)$' Evidence notes
The pattern pins the ENTIRE rendered type, not just the name, because each of this statement's four factors -- fib (m-1) * fib n against fib m * fib (n+1) -- can be transposed into a different but well-typed proposition the gate would prove just as happily. 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.