IndisputableMonolith.Combustion.FlameSpeedFromPhiLadder
IndisputableMonolith/Combustion/FlameSpeedFromPhiLadder.lean · 84 lines · 8 declarations
show as:
view math explainer →
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