IndisputableMonolith.Cosmology.ReionizationHistoryFromRS
IndisputableMonolith/Cosmology/ReionizationHistoryFromRS.lean · 53 lines · 7 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3
4/-!
5# Reionization History from RS — Cosmology Depth
6
7Five canonical epochs of reionization (= configDim D = 5):
8 cosmic dark ages (z > 20), first stars (z ~ 20), galaxy formation
9 (z ~ 15), bulk reionization (z ~ 7-10), saturation (z < 6).
10
11Each boundary redshift sits one rung on a geometric ladder.
12
13Lean status: 0 sorry, 0 axiom.
14-/
15
16namespace IndisputableMonolith.Cosmology.ReionizationHistoryFromRS
17open Constants
18
19inductive ReionizationEpoch where
20 | darkAges
21 | firstStars
22 | galaxyFormation
23 | bulkReionization
24 | saturation
25 deriving DecidableEq, Repr, BEq, Fintype
26
27theorem reionizationEpoch_count :
28 Fintype.card ReionizationEpoch = 5 := by decide
29
30noncomputable def boundaryRedshift (k : ℕ) : ℝ := phi ^ k
31
32theorem redshift_ratio (k : ℕ) :
33 boundaryRedshift (k + 1) / boundaryRedshift k = phi := by
34 unfold boundaryRedshift
35 have hpos : (0 : ℝ) < phi ^ k := pow_pos phi_pos k
36 rw [div_eq_iff hpos.ne', pow_succ]
37 ring
38
39theorem redshift_pos (k : ℕ) : 0 < boundaryRedshift k :=
40 pow_pos phi_pos k
41
42structure ReionizationCert where
43 five_epochs : Fintype.card ReionizationEpoch = 5
44 phi_ratio : ∀ k, boundaryRedshift (k + 1) / boundaryRedshift k = phi
45 boundary_always_pos : ∀ k, 0 < boundaryRedshift k
46
47noncomputable def reionizationCert : ReionizationCert where
48 five_epochs := reionizationEpoch_count
49 phi_ratio := redshift_ratio
50 boundary_always_pos := redshift_pos
51
52end IndisputableMonolith.Cosmology.ReionizationHistoryFromRS
53