kernel-Int.fib_two_mul_add_one_pos
- Kind
- kernel-term
- Status
- checked
Supports: forall n : Int, 0 < Int.fib (2*n+1)
test "$(cargo run -q -p axeyum-lean-kernel --release --example int_theorem_inventory -- fib_two_mul_add_one_pos 2>/dev/null | grep -xFc 'theorem Int.fib_two_mul_add_one_pos ((x0 : Int) -> Int.lt Int.zero (Int.fib (Int.add (Int.mul (Int.ofNat (AxNat.succ (AxNat.succ AxNat.zero))) x0) (Int.ofNat (AxNat.succ AxNat.zero)))))')" -ge 1 Evidence notes
The kernel re-infers the theorem type from the constructed term. `Int.fib` did not exist in this kernel before this fact closed -- it is a new definition (`crates/axeyum-lean-kernel/src/int_prelude/fibonacci.rs::declare_fib`), the sign-extended `fib(-n) = (-1)^(n+1) fib(n)` built as one `Int.rec` case split with no new recursion device. The proof splits on `n`'s constructor: the `ofNat k` branch reduces `2k+1` and `fib`'s own case split PURELY (no lemma) down to a `Nat`-side `fib_pos_of_pos`/`zero_lt_succ` composition; the `negSucc j` branch needs one genuine non-structural fact, `(-1)^(2j) = 1` (`pow_neg_one_two_mul`, induction on `j` reusing `pow_neg_one_succ` from `fib_cassini`), then transports the resulting `Nat`-side positivity fact across `Eq Int (fib (negSucc (2j))) (ofNat (Nat.fib (2j+1)))`. `Int.fib`'s definition is independently checked by evaluation, not just by this theorem's type-check: `fib_computes_the_sign_extended_sequence` (`int_prelude_tests.rs`) reduces `fib` at six concrete indices (both signs) against the hand-computed sequence, with a negative control at `fib(-2)` guarding against a definition that dropped the sign.