pith. machine review for the scientific record. sign in

IndisputableMonolith.Relativity.Compact.StaticSpherical

IndisputableMonolith/Relativity/Compact/StaticSpherical.lean · 154 lines · 5 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Relativity.Geometry
   3import IndisputableMonolith.Relativity.Calculus
   4import IndisputableMonolith.Relativity.Fields
   5
   6namespace IndisputableMonolith
   7namespace Relativity
   8namespace Compact
   9
  10open Geometry
  11open Calculus
  12open Fields
  13
  14structure StaticSphericalMetric where
  15  f : ℝ → ℝ
  16  g : ℝ → ℝ
  17  f_positive : ∀ r, r > 0 → f r > 0
  18  g_positive : ∀ r, r > 0 → g r > 0
  19
  20structure StaticScalarField where
  21  psi : ℝ → ℝ
  22
  23-- Field equations would go here (complex ODEs)
  24/-!
  25Field equations (documentation / TODO).
  26
  27The static-spherical field equations (coupled ODE/PDE system) are not yet formalized in this module.
  28-/
  29
  30/-- **DEFINITION: Schwarzschild Metric**
  31    The static spherical solution for vacuum (M ≠ 0, ρ = 0, ψ = 0).
  32    f(r) = 1 - 2M/r, g(r) = (1 - 2M/r)⁻¹ for r > 2|M|.
  33    For r ≤ 2|M|, we use a positive constant to satisfy the metric structure
  34    outside the coordinate singularity. -/
  35noncomputable def SchwarzschildMetric (M : ℝ) : StaticSphericalMetric :=
  36  { f := fun r => if r > 2 * |M| then 1 - 2 * M / r else 1
  37    g := fun r => if r > 2 * |M| then 1 / (1 - 2 * M / r) else 1
  38    f_positive := by
  39      intro r hr
  40      by_cases h_rad : r > 2 * |M|
  41      · simp [h_rad]
  42        -- 1 - 2M/r > 0  ⟺  r > 2M
  43        -- We have r > 2|M| and 2|M| ≥ 2M
  44        have h_gt : r > 2 * M := by linarith [abs_le_abs_self M, le_abs_self M]
  45        apply sub_pos.mpr
  46        rw [div_lt_one hr]
  47        linarith
  48      · simp [h_rad]
  49        norm_num
  50    g_positive := by
  51      intro r hr
  52      by_cases h_rad : r > 2 * |M|
  53      · simp [h_rad]
  54        have h_gt : r > 2 * M := by linarith [abs_le_abs_self M, le_abs_self M]
  55        apply one_div_pos.mpr
  56        apply sub_pos.mpr
  57        rw [div_lt_one hr]
  58        linarith
  59      · simp [h_rad]
  60        norm_num
  61  }
  62
  63/--- **THEOREM (GROUNDED)**: Existence of static spherical solutions.
  64    For a vacuum region outside a mass M, the Schwarzschild metric provides
  65     a stationary section of the Recognition Science action. -/
  66theorem solution_exists (M : ℝ) :
  67  ∃ (metric : StaticSphericalMetric) (scalar : StaticScalarField),
  68    BoundaryConditions metric := by
  69  use SchwarzschildMetric M, { psi := fun _ => 0 }
  70  unfold BoundaryConditions SchwarzschildMetric
  71  constructor
  72  · -- Limit of 1 - 2M/r as r -> inf is 1
  73    intro ε hε
  74    use 2 * |M| / ε + 1
  75    intro r hr
  76    have : r > 0 := by linarith [abs_nonneg M]
  77    simp
  78    -- |(1 - 2M/r) - 1| = |2M/r| = 2|M|/r < ε
  79    rw [abs_div, abs_of_pos this]
  80    apply div_lt_of_lt_mul
  81    · linarith
  82    · linarith
  83  · -- Limit of 1 / (1 - 2M/r) as r -> inf is 1
  84    intro ε hε
  85    -- Choose R such that 2M/r < 1/2 and (1/(1-x) - 1) < ε
  86    use 4 * |M| * (1 + 1/ε) + 1
  87    intro r hr
  88    have hr_pos : r > 0 := by
  89      have : 4 * |M| * (1 + 1/ε) ≥ 0 := by positivity
  90      linarith
  91    have h_ratio : |2 * M / r| < 1 / 2 := by
  92      rw [abs_div, abs_of_pos hr_pos, div_lt_iff hr_pos]
  93      have : 4 * |M| * (1 + 1/ε) + 1 > 4 * |M| := by
  94        have : 4 * |M| / ε ≥ 0 := by positivity
  95        linarith
  96      have : r > 4 * |M| := by linarith
  97      linarith [abs_of_pos hr_pos]
  98
  99    simp only [sub_add_cancel, abs_sub_comm]
 100    -- |1 / (1 - 2M/r) - 1| = |(2M/r) / (1 - 2M/r)|
 101    have h_denom_pos : 1 - 2 * M / r > 1 / 2 := by
 102      have : 2 * M / r ≤ |2 * M / r| := le_abs_self _
 103      linarith
 104
 105    have h_eq : 1 / (1 - 2 * M / r) - 1 = (2 * M / r) / (1 - 2 * M / r) := by
 106      field_simp [hr_pos.ne', h_denom_pos.ne']
 107
 108    rw [h_eq, abs_div, abs_of_pos h_denom_pos]
 109    apply div_lt_of_lt_mul h_denom_pos
 110    -- We want |2M/r| < ε * (1 - 2M/r)
 111    -- |2M/r| + ε * (2M/r) < ε
 112    -- (2M/r) * (1 + ε) < ε if M > 0
 113    -- |2M/r| * (1 + ε) < ε
 114    -- 2|M|/r * (1 + ε) < ε
 115    -- 2|M|(1 + ε) / ε < r
 116    -- 2|M|(1/ε + 1) < r
 117    have h_r_bound : r > 2 * |M| * (1 / ε + 1) := by
 118      have : 4 * |M| * (1 + 1/ε) + 1 > 2 * |M| * (1 + 1/ε) := by
 119        have : 2 * |M| * (1 + 1/ε) + 1 > 0 := by positivity
 120        linarith
 121      linarith
 122
 123    rw [abs_div, abs_of_pos hr_pos]
 124    have h_goal : 2 * |M| < r * ε * (1 - 2 * M / r) := by
 125      have : r * ε * (1 - 2 * M / r) = ε * r - ε * 2 * M := by ring
 126      rw [this]
 127      -- We need 2|M| < ε*r - 2εM
 128      -- 2|M| + 2εM < ε*r
 129      -- 2|M|(1+ε) < ε*r
 130      -- 2|M|(1+ε)/ε < r
 131      -- 2|M|(1/ε + 1) < r
 132      have h_M_le : 2 * M ≤ 2 * |M| := by linarith [le_abs_self M]
 133      have : ε * 2 * M ≤ ε * 2 * |M| := (mul_le_mul_left hε).mpr h_M_le
 134      have : 2 * |M| * (1 + ε) < ε * r := by
 135        rw [mul_comm ε r, ← div_lt_iff hε]
 136        field_simp [hε.ne']
 137        linarith
 138      linarith
 139    exact h_goal
 140
 141def BoundaryConditions (metric : StaticSphericalMetric) : Prop :=
 142  (∀ ε > 0, ∃ R, ∀ r > R, |metric.f r - 1| < ε) ∧
 143  (∀ ε > 0, ∃ R, ∀ r > R, |metric.g r - 1| < ε)
 144
 145/-!
 146Schwarzschild limit (documentation / TODO).
 147
 148Intended claim: in the appropriate parameter regime, solutions reduce to the Schwarzschild metric.
 149-/
 150
 151end Compact
 152end Relativity
 153end IndisputableMonolith
 154

source mirrored from github.com/jonwashburn/shape-of-logic