Identifier
F:ml430-int-fib-two-mul-0e70f3dd
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

The proposition declared as `Int.fib_two_mul` in the pinned Mathlib v4.30 source.

Formal statement
∀ (n : ℤ), Int.fib (2 * n) = Int.fib n * (2 * Int.fib (n + 1) - Int.fib n)

Dependencies

The graph shows direct ledger edges. Follow a node to open its artifact page.

Direct dependencies appear to the left. The current fact is in the center. Facts that depend directly on it appear to the right. Addition on the integers is ass Addition on the integers is com [generated] kernel theorem Int. Int.fib_rec -- the Fibonacci re Multiplication distributes over Multiplication on the integers Multiplying an integer by one i [generated] kernel theorem Int. Current fact Mathlib v4.30 source propositio
9 direct dependencies 1 direct dependents Graph shows the first 8 on each side.

Evidence

kernel-Int.fib_two_mul

Kind
kernel-term
Status
checked

Supports: Int.fib_two_mul 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.mul (Int.ofNat (AxNat.succ (AxNat.succ AxNat.zero))) x0)) (Int.mul (Int.fib x0) (Int.sub (Int.mul (Int.ofNat (AxNat.succ (AxNat.succ AxNat.zero))) (Int.fib (Int.add x0 Int.one))) (Int.fib x0)))).

Checker command
cargo run -q --release -p axeyum-lean-kernel --example int_theorem_inventory -- fib_two_mul 2>/dev/null | grep -cE '^theorem[[:space:]]+Int\.fib_two_mul[[:space:]]+\(\(x0[[:space:]]+:[[:space:]]+Int\)[[:space:]]+->[[:space:]]+Eq\.\{1\}[[:space:]]+Int[[:space:]]+\(Int\.fib[[:space:]]+\(Int\.mul[[:space:]]+\(Int\.ofNat[[:space:]]+\(AxNat\.succ[[:space:]]+\(AxNat\.succ[[:space:]]+AxNat\.zero\)\)\)[[:space:]]+x0\)\)[[:space:]]+\(Int\.mul[[:space:]]+\(Int\.fib[[:space:]]+x0\)[[:space:]]+\(Int\.sub[[:space:]]+\(Int\.mul[[:space:]]+\(Int\.ofNat[[:space:]]+\(AxNat\.succ[[:space:]]+\(AxNat\.succ[[:space:]]+AxNat\.zero\)\)\)[[:space:]]+\(Int\.fib[[:space:]]+\(Int\.add[[:space:]]+x0[[:space:]]+Int\.one\)\)\)[[:space:]]+\(Int\.fib[[:space:]]+x0\)\)\)\)$'
Evidence notes

The pattern pins the ENTIRE rendered type, not just the name, so a transposed factor (`fib n` and `fib(n+1)` swapped inside the `sub`, or `sub` folded to `add`) cannot pass. Verified discriminating on this tree: 1 against the real row, 0 against a row with `Int.sub` rewritten to `Int.add` and 0 against a row with the `2` literal (`AxNat.succ (AxNat.succ AxNat.zero)`) collapsed to `AxNat.zero`. Tab separators matched with `[[:space:]]`, never `\t` -- see this repository's documented GNU-grep/ugrep divergence. `--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.

footprint-Int.fib_two_mul

Kind
exhaustive-enumeration
Status
checked

Supports: axiom_footprint: [] -- the integer prelude's trusted surface is empty, which bounds Int.fib_two_mul

Checker command
cargo run -q --release -p axeyum-lean-kernel --example nat_axiom_inventory -- --include-constructed --require-axiom-free integer
Evidence notes

Re-measured on this tree: integer trusted surface = 0. --require-axiom-free exits nonzero when the count is not zero, so the exit status depends on the finding. --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.

evaluation-Int.fib_two_mul-each-sign

Kind
witness-replay
Status
checked

Supports: fib_two_mul instantiated at n=5 (fib(10)=55=fib(5)*(2*fib(6)-fib(5))=5*11) and n=-3 (fib(-6)=-8=fib(-3)*(2*fib(-2)-fib(-3))=2*(-4)), each paired with the value the swapped-coefficient formula fib(n)*(2*fib(n)-fib(n+1)) gives (10 at both indices), which must NOT be def_eq. n=5 was chosen so a transposed factor changes the numeric result.

Checker command
test "$(cargo test -q -p axeyum-lean-kernel --lib int_prelude::int_prelude_tests::fib_two_mul_computes_at_a_concrete_index_of_each_sign 2>/dev/null | grep -cE '^test result: ok\. 1 passed')" -eq 1
Evidence notes

crates/axeyum-lean-kernel/src/int_prelude/int_prelude_tests.rs. The command asserts EXACTLY ONE test passed, so a filter matching nothing fails rather than exiting 0.

Provenance

{
  "date": "2026-08-29",
  "established_by": "axeyum-lean-kernel build_int_prelude (crates/axeyum-lean-kernel/src/int_prelude/fibonacci.rs, declare_fib_two_mul)",
  "prior_art": [
    {
      "attribution": "the proposition statement was read from the pinned statement-only inventory; the proof PRODUCED here is this kernel's own construction (Int.fib_add plus a purpose-built subtraction bridge and ring algebra), not a transcription of Mathlib's tactic proof, which was never consulted.",
      "what": "the theorem declaration `Int.fib_two_mul`",
      "where": "mathlib4 commit c5ea00351c28e24afc9f0f84379aa41082b1188f (v4.30.0)",
      "who": "the Mathlib contributors",
      "year": 2026
    }
  ],
  "source": "proved in-tree over the CONSTRUCTED integers. The canonical type was read from int_theorem_inventory's own output and compared symbol for symbol against the pinned Mathlib statement already recorded in formal.statement, which is unchanged."
}