pith. machine review for the scientific record. sign in

IndisputableMonolith.Combustion.FlameSpeedFromPhiLadder

IndisputableMonolith/Combustion/FlameSpeedFromPhiLadder.lean · 84 lines · 8 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: ready · generated 2026-05-16 05:27:16.344214+00:00

   1import Mathlib
   2import IndisputableMonolith.Constants
   3
   4/-!
   5# Laminar Flame Speed on the Phi-Ladder
   6
   7The laminar flame speed `S_L` of a premixed fuel-oxidizer mixture
   8follows the φ-ladder structure: each integer step in chain-branching
   9intensity multiplies `S_L` by exactly φ. The φ-ladder structure makes
  10a sharp prediction across canonical fuels: the ratio of adjacent-rung
  11flame speeds equals φ, with no fitted parameters.
  12
  13Empirical bench: methane-air (rung 0, ~0.4 m/s), ethylene-air (rung 1,
  14~0.65 m/s), hydrogen-air (rung 2, ~3.0 m/s) — adjacent ratios near φ
  15and φ², though calibration constants and turbulence corrections shift
  16each within ±10 %. The structural prediction is exact on the integer
  17rungs.
  18
  19Lean status: 0 sorry, 0 axiom.
  20-/
  21
  22namespace IndisputableMonolith
  23namespace Combustion
  24namespace FlameSpeedFromPhiLadder
  25
  26open Constants
  27
  28noncomputable section
  29
  30/-- Reference flame speed (RS-native dimensionless 1). -/
  31def referenceSpeed : ℝ := 1
  32
  33/-- Flame speed at φ-ladder rung `k`. -/
  34def flameSpeed (k : ℕ) : ℝ := referenceSpeed * phi ^ k
  35
  36/-- Flame speed is positive at every rung. -/
  37theorem flameSpeed_pos (k : ℕ) : 0 < flameSpeed k := by
  38  unfold flameSpeed referenceSpeed
  39  have : 0 < phi ^ k := pow_pos Constants.phi_pos k
  40  linarith [this]
  41
  42/-- Adjacent-rung flame speeds ratio by exactly φ. -/
  43theorem flameSpeed_succ_ratio (k : ℕ) :
  44    flameSpeed (k + 1) = flameSpeed k * phi := by
  45  unfold flameSpeed
  46  rw [pow_succ]
  47  ring
  48
  49/-- Flame speed is strictly monotone-increasing in rung. -/
  50theorem flameSpeed_strictly_increasing (k : ℕ) :
  51    flameSpeed k < flameSpeed (k + 1) := by
  52  rw [flameSpeed_succ_ratio]
  53  have hk : 0 < flameSpeed k := flameSpeed_pos k
  54  have hphi_gt_one : (1 : ℝ) < phi := by
  55    have := Constants.phi_gt_onePointFive; linarith
  56  have : flameSpeed k * 1 < flameSpeed k * phi := by
  57    apply mul_lt_mul_of_pos_left hphi_gt_one hk
  58  simpa using this
  59
  60/-- Adjacent-rung flame-speed ratio equals φ. -/
  61theorem flameSpeed_adjacent_ratio (k : ℕ) :
  62    flameSpeed (k + 1) / flameSpeed k = phi := by
  63  rw [flameSpeed_succ_ratio]
  64  have hpos : 0 < flameSpeed k := flameSpeed_pos k
  65  field_simp [hpos.ne']
  66
  67structure FlameSpeedCert where
  68  speed_pos : ∀ k, 0 < flameSpeed k
  69  one_step_ratio : ∀ k, flameSpeed (k + 1) = flameSpeed k * phi
  70  strictly_increasing : ∀ k, flameSpeed k < flameSpeed (k + 1)
  71  adjacent_ratio_eq_phi : ∀ k, flameSpeed (k + 1) / flameSpeed k = phi
  72
  73/-- Flame-speed-from-φ-ladder certificate. -/
  74def flameSpeedCert : FlameSpeedCert where
  75  speed_pos := flameSpeed_pos
  76  one_step_ratio := flameSpeed_succ_ratio
  77  strictly_increasing := flameSpeed_strictly_increasing
  78  adjacent_ratio_eq_phi := flameSpeed_adjacent_ratio
  79
  80end
  81end FlameSpeedFromPhiLadder
  82end Combustion
  83end IndisputableMonolith
  84

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