pith. machine review for the scientific record. sign in

IndisputableMonolith.CrossDomain.FibonacciPhiUniversality

IndisputableMonolith/CrossDomain/FibonacciPhiUniversality.lean · 114 lines · 11 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Constants
   3
   4/-!
   5# C20: Fibonacci-Phi Identity Universality — Wave 63 Cross-Domain
   6
   7The Fibonacci-phi identity reduces any high power of φ to a linear
   8expression in φ:
   9
  10  φ^n = F(n) · φ + F(n−1)   (where F = Nat.fib, F(0)=0, F(1)=1)
  11
  12This identity is the mechanism by which per-domain modules proved bounds
  13like "φ^8 > 46" (telomere halving) and "φ^44 > 10^8" (baryon asymmetry):
  14every such bound reduces to an arithmetic fact about F(n) and F(n-1)
  15plus the numerical bracket on φ itself.
  16
  17This module states the identities that are already proved in
  18`IndisputableMonolith.Constants` as a single cross-domain certificate,
  19and adds the universal recurrence-in-Nat.fib form.
  20
  21Lean status: 0 sorry, 0 axiom.
  22-/
  23
  24namespace IndisputableMonolith.CrossDomain.FibonacciPhiUniversality
  25
  26open Constants
  27
  28/-- Already proved in `Constants`: φ² = φ + 1. -/
  29theorem phi_sq : phi ^ 2 = phi + 1 := phi_sq_eq
  30
  31/-- Already proved: φ³ = 2φ + 1 = F(3)·φ + F(2). -/
  32theorem phi_cubed : phi ^ 3 = 2 * phi + 1 := phi_cubed_eq
  33
  34/-- Already proved: φ⁴ = 3φ + 2 = F(4)·φ + F(3). -/
  35theorem phi_fourth : phi ^ 4 = 3 * phi + 2 := phi_fourth_eq
  36
  37/-- Already proved: φ⁵ = 5φ + 3 = F(5)·φ + F(4). -/
  38theorem phi_fifth : phi ^ 5 = 5 * phi + 3 := phi_fifth_eq
  39
  40/-- Already proved: φ⁸ = 21φ + 13 = F(8)·φ + F(7). -/
  41theorem phi_eighth : phi ^ 8 = 21 * phi + 13 := phi_eighth_eq
  42
  43/-- Fibonacci coefficients F(1), F(2), ..., F(11) match the coefficients above. -/
  44theorem fib_values :
  45    Nat.fib 1 = 1 ∧ Nat.fib 2 = 1 ∧ Nat.fib 3 = 2 ∧ Nat.fib 4 = 3 ∧
  46    Nat.fib 5 = 5 ∧ Nat.fib 6 = 8 ∧ Nat.fib 7 = 13 ∧ Nat.fib 8 = 21 ∧
  47    Nat.fib 9 = 34 ∧ Nat.fib 10 = 55 ∧ Nat.fib 11 = 89 := by
  48  refine ⟨rfl, rfl, rfl, rfl, rfl, rfl, rfl, rfl, rfl, rfl, rfl⟩
  49
  50/-- Universal Fibonacci-phi identity by induction. -/
  51theorem phi_pow_fib : ∀ n : ℕ, phi ^ (n + 2) =
  52    (Nat.fib (n + 2) : ℝ) * phi + (Nat.fib (n + 1) : ℝ) := by
  53  intro n
  54  induction n with
  55  | zero =>
  56    show phi ^ 2 = (Nat.fib 2 : ℝ) * phi + (Nat.fib 1 : ℝ)
  57    rw [phi_sq]; push_cast; ring
  58  | succ k ih =>
  59    -- φ^(k+3) = φ^(k+2) · φ = (F(k+2)·φ + F(k+1)) · φ
  60    --        = F(k+2)·φ² + F(k+1)·φ
  61    --        = F(k+2)·(φ + 1) + F(k+1)·φ
  62    --        = (F(k+2) + F(k+1))·φ + F(k+2)
  63    --        = F(k+3)·φ + F(k+2)
  64    have hsucc : phi ^ (k + 1 + 2) = phi ^ (k + 2) * phi := by ring
  65    rw [hsucc, ih]
  66    have hsq : phi^2 = phi + 1 := phi_sq
  67    have hfib_rec : (Nat.fib (k + 1 + 2) : ℝ) =
  68        (Nat.fib (k + 2) : ℝ) + (Nat.fib (k + 1) : ℝ) := by
  69      have hnat : Nat.fib (k + 1 + 2) = Nat.fib (k + 1) + Nat.fib (k + 2) :=
  70        Nat.fib_add_two
  71      push_cast [hnat]; ring
  72    rw [hfib_rec]
  73    nlinarith [hsq]
  74
  75/-- Fibonacci coefficients are strictly increasing from n ≥ 1 (since F(1)=F(2)=1,
  76    strict starts at n=2). -/
  77theorem fib_strict_mono : ∀ n, 2 ≤ n → Nat.fib n < Nat.fib (n + 1) :=
  78  fun n hn => Nat.fib_lt_fib_succ hn
  79
  80/-- Universal corollary: any φ^n is at most F(n)·φ + F(n-1), a bound in terms
  81    of the Fibonacci sequence. -/
  82theorem phi_pow_bounded_by_fib (n : ℕ) (hn : 2 ≤ n) :
  83    phi ^ n ≤ (Nat.fib n : ℝ) * phi + (Nat.fib (n - 1) : ℝ) := by
  84  rcases Nat.exists_eq_add_of_le hn with ⟨k, hk⟩
  85  -- hk : n = 2 + k
  86  have : n = k + 2 := by omega
  87  rw [this]
  88  have h := phi_pow_fib k
  89  -- We need fib ((k + 2) - 1) = fib (k + 1)
  90  have : k + 2 - 1 = k + 1 := by omega
  91  rw [this]
  92  exact le_of_eq h
  93
  94structure FibonacciPhiCert where
  95  phi_sq : phi ^ 2 = phi + 1
  96  phi_cubed : phi ^ 3 = 2 * phi + 1
  97  phi_fourth : phi ^ 4 = 3 * phi + 2
  98  phi_fifth : phi ^ 5 = 5 * phi + 3
  99  phi_eighth : phi ^ 8 = 21 * phi + 13
 100  universal : ∀ n : ℕ, phi ^ (n + 2) =
 101    (Nat.fib (n + 2) : ℝ) * phi + (Nat.fib (n + 1) : ℝ)
 102  fib_monotone : ∀ n, 2 ≤ n → Nat.fib n < Nat.fib (n + 1)
 103
 104noncomputable def fibonacciPhiCert : FibonacciPhiCert where
 105  phi_sq := phi_sq
 106  phi_cubed := phi_cubed
 107  phi_fourth := phi_fourth
 108  phi_fifth := phi_fifth
 109  phi_eighth := phi_eighth
 110  universal := phi_pow_fib
 111  fib_monotone := fib_strict_mono
 112
 113end IndisputableMonolith.CrossDomain.FibonacciPhiUniversality
 114

source mirrored from github.com/jonwashburn/shape-of-logic