IndisputableMonolith.Astrophysics.GalacticRotationCurveFromRS
IndisputableMonolith/Astrophysics/GalacticRotationCurveFromRS.lean · 51 lines · 7 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3
4/-!
5# Galactic Rotation Curve from RS — Astrophysics Depth
6
7Five canonical rotation-curve regimes (= configDim D = 5):
8 rigid-body inner, rising, flat (MOND/DM), declining, truncation.
9
10Each radius where regime transitions sits one rung up the φ-ladder.
11
12Lean status: 0 sorry, 0 axiom.
13-/
14
15namespace IndisputableMonolith.Astrophysics.GalacticRotationCurveFromRS
16open Constants
17
18inductive RotationRegime where
19 | rigidBodyInner
20 | rising
21 | flat
22 | declining
23 | truncation
24 deriving DecidableEq, Repr, BEq, Fintype
25
26theorem rotationRegime_count : Fintype.card RotationRegime = 5 := by decide
27
28noncomputable def transitionRadius (k : ℕ) : ℝ := phi ^ k
29
30theorem transitionRadius_ratio (k : ℕ) :
31 transitionRadius (k + 1) / transitionRadius k = phi := by
32 unfold transitionRadius
33 have hpos : (0 : ℝ) < phi ^ k := pow_pos phi_pos k
34 rw [div_eq_iff hpos.ne', pow_succ]
35 ring
36
37theorem transitionRadius_pos (k : ℕ) : 0 < transitionRadius k :=
38 pow_pos phi_pos k
39
40structure GalacticRotationCert where
41 five_regimes : Fintype.card RotationRegime = 5
42 phi_ratio : ∀ k, transitionRadius (k + 1) / transitionRadius k = phi
43 radius_always_pos : ∀ k, 0 < transitionRadius k
44
45noncomputable def galacticRotationCert : GalacticRotationCert where
46 five_regimes := rotationRegime_count
47 phi_ratio := transitionRadius_ratio
48 radius_always_pos := transitionRadius_pos
49
50end IndisputableMonolith.Astrophysics.GalacticRotationCurveFromRS
51