norm_num extension for Nat.fib #
This norm_num extension uses a strategy parallel to that of Nat.fastFib, but it instead
produces proofs of what Nat.fib evaluates to.
Auxiliary definition for proveFib extension.
Instances For
theorem
Mathlib.Meta.NormNum.isFibAux_two_mul
{n a b n' a' b' : โ}
(H : IsFibAux n a b)
(hn : 2 * n = n')
(h1 : a * (2 * b - a) = a')
(h2 : a * a + b * b = b')
:
IsFibAux n' a' b'
theorem
Mathlib.Meta.NormNum.isFibAux_two_mul_add_one
{n a b n' a' b' : โ}
(H : IsFibAux n a b)
(hn : 2 * n + 1 = n')
(h1 : a * a + b * b = a')
(h2 : b * (2 * a + b) = b')
:
IsFibAux n' a' b'
partial def
Mathlib.Meta.NormNum.proveNatFibAux
(en' : Q(โ))
:
(ea' : Q(โ)) ร (eb' : Q(โ)) ร Q(IsFibAux ยซ$en'ยป ยซ$ea'ยป ยซ$eb'ยป)
theorem
Mathlib.Meta.NormNum.isFibAux_two_mul_done
{n a b n' a' : โ}
(H : IsFibAux n a b)
(hn : 2 * n = n')
(h : a * (2 * b - a) = a')
:
Nat.fib n' = a'
theorem
Mathlib.Meta.NormNum.isFibAux_two_mul_add_one_done
{n a b n' a' : โ}
(H : IsFibAux n a b)
(hn : 2 * n + 1 = n')
(h : a * a + b * b = a')
:
Nat.fib n' = a'
Given the natural number literal ex, returns Nat.fib ex as a natural number literal
and an equality proof. Panics if ex isn't a natural number literal.
Instances For
Evaluates the Nat.fib function.