IndisputableMonolith.Physics.PlasmonicModesFromPhiLadder
IndisputableMonolith/Physics/PlasmonicModesFromPhiLadder.lean · 51 lines · 7 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3
4/-!
5# Plasmonic Modes from φ-ladder — B15 Photonics Depth
6
7Five canonical plasmonic mode types (= configDim D = 5):
8 surface plasmon polariton, localized surface plasmon, propagating,
9 bulk, gap plasmon.
10
11Each mode's characteristic frequency sits one rung up the φ-ladder.
12
13Lean status: 0 sorry, 0 axiom.
14-/
15
16namespace IndisputableMonolith.Physics.PlasmonicModesFromPhiLadder
17open Constants
18
19inductive PlasmonicMode where
20 | surfacePlasmonPolariton
21 | localizedSurface
22 | propagating
23 | bulk
24 | gapPlasmon
25 deriving DecidableEq, Repr, BEq, Fintype
26
27theorem plasmonicMode_count : Fintype.card PlasmonicMode = 5 := by decide
28
29noncomputable def plasmonFrequency (k : ℕ) : ℝ := phi ^ k
30
31theorem frequency_ratio (k : ℕ) :
32 plasmonFrequency (k + 1) / plasmonFrequency k = phi := by
33 unfold plasmonFrequency
34 have hpos : (0 : ℝ) < phi ^ k := pow_pos phi_pos k
35 rw [div_eq_iff hpos.ne', pow_succ]
36 ring
37
38theorem frequency_pos (k : ℕ) : 0 < plasmonFrequency k := pow_pos phi_pos k
39
40structure PlasmonicModeCert where
41 five_modes : Fintype.card PlasmonicMode = 5
42 phi_ratio : ∀ k, plasmonFrequency (k + 1) / plasmonFrequency k = phi
43 frequency_always_pos : ∀ k, 0 < plasmonFrequency k
44
45noncomputable def plasmonicModeCert : PlasmonicModeCert where
46 five_modes := plasmonicMode_count
47 phi_ratio := frequency_ratio
48 frequency_always_pos := frequency_pos
49
50end IndisputableMonolith.Physics.PlasmonicModesFromPhiLadder
51