kernel-Int.fib_two_mul_add_two
- Kind
- kernel-term
- Status
- checked
Supports: Int.fib_two_mul_add_two is admitted by the trusted kernel gate, and its canonical type is the pinned Mathlib statement symbol for symbol: ((x0 : Int) -> Eq.{1} Int (Int.fib (Int.add (Int.mul (Int.ofNat (AxNat.succ (AxNat.succ AxNat.zero))) x0) (Int.ofNat (AxNat.succ (AxNat.succ AxNat.zero))))) (Int.mul (Int.fib (Int.add x0 Int.one)) (Int.add (Int.mul (Int.ofNat (AxNat.succ (AxNat.succ AxNat.zero))) (Int.fib x0)) (Int.fib (Int.add x0 Int.one))))).
cargo run -q --release -p axeyum-lean-kernel --example int_theorem_inventory -- fib_two_mul_add_two 2>/dev/null | grep -cE '^theorem[[:space:]]+Int\.fib_two_mul_add_two[[:space:]]+\(\(x0[[:space:]]+:[[:space:]]+Int\)[[:space:]]+->[[:space:]]+Eq\.\{1\}[[:space:]]+Int[[:space:]]+\(Int\.fib[[:space:]]+\(Int\.add[[:space:]]+\(Int\.mul[[:space:]]+\(Int\.ofNat[[:space:]]+\(AxNat\.succ[[:space:]]+\(AxNat\.succ[[:space:]]+AxNat\.zero\)\)\)[[:space:]]+x0\)[[:space:]]+\(Int\.ofNat[[:space:]]+\(AxNat\.succ[[:space:]]+\(AxNat\.succ[[:space:]]+AxNat\.zero\)\)\)\)\)[[:space:]]+\(Int\.mul[[:space:]]+\(Int\.fib[[:space:]]+\(Int\.add[[:space:]]+x0[[:space:]]+Int\.one\)\)[[:space:]]+\(Int\.add[[:space:]]+\(Int\.mul[[:space:]]+\(Int\.ofNat[[:space:]]+\(AxNat\.succ[[:space:]]+\(AxNat\.succ[[:space:]]+AxNat\.zero\)\)\)[[:space:]]+\(Int\.fib[[:space:]]+x0\)\)[[:space:]]+\(Int\.fib[[:space:]]+\(Int\.add[[:space:]]+x0[[:space:]]+Int\.one\)\)\)\)\)$' Evidence notes
The pattern pins the ENTIRE rendered type, not just the name, so swapping which `fib` factor is doubled (`fib(n+1)*(2*fib n + fib(n+1))` vs `fib n*(2*fib(n+1) + fib n)`) cannot pass. Verified discriminating on this tree: 1 against the real row, 0 against a row with the two `Int.fib (Int.add x0 Int.one)` / `Int.fib x0` occurrences swapped in the second factor. Tab separators matched with `[[:space:]]`, never `\t`. `--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.