IndisputableMonolith.Astrophysics.PulsarEmissionRegimesFromRS
IndisputableMonolith/Astrophysics/PulsarEmissionRegimesFromRS.lean · 50 lines · 7 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3
4/-!
5# Pulsar Emission Regimes from RS — B12 Astrophysical MHD Depth
6
7Five canonical pulsar emission regimes (= configDim D = 5):
8 normal pulsar, millisecond pulsar, magnetar, rotating radio transient,
9 fast radio burst source.
10
11Period scaling on φ-ladder: adjacent-regime ratio = φ.
12
13Lean status: 0 sorry, 0 axiom.
14-/
15
16namespace IndisputableMonolith.Astrophysics.PulsarEmissionRegimesFromRS
17open Constants
18
19inductive PulsarRegime where
20 | normal
21 | millisecond
22 | magnetar
23 | rrat
24 | frbSource
25 deriving DecidableEq, Repr, BEq, Fintype
26
27theorem pulsarRegime_count : Fintype.card PulsarRegime = 5 := by decide
28
29noncomputable def period (k : ℕ) : ℝ := phi ^ k
30
31theorem period_ratio (k : ℕ) : period (k + 1) / period k = phi := by
32 unfold period
33 have hpos : (0 : ℝ) < phi ^ k := pow_pos phi_pos k
34 rw [div_eq_iff hpos.ne', pow_succ]
35 ring
36
37theorem period_pos (k : ℕ) : 0 < period k := pow_pos phi_pos k
38
39structure PulsarEmissionCert where
40 five_regimes : Fintype.card PulsarRegime = 5
41 phi_ratio : ∀ k, period (k + 1) / period k = phi
42 period_always_pos : ∀ k, 0 < period k
43
44noncomputable def pulsarEmissionCert : PulsarEmissionCert where
45 five_regimes := pulsarRegime_count
46 phi_ratio := period_ratio
47 period_always_pos := period_pos
48
49end IndisputableMonolith.Astrophysics.PulsarEmissionRegimesFromRS
50