pith. machine review for the scientific record. sign in

IndisputableMonolith.NavierStokes.RM2U.RM2Closure

IndisputableMonolith/NavierStokes/RM2U/RM2Closure.lean · 179 lines · 4 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import IndisputableMonolith.NavierStokes.RM2U.Core
   2
   3/-!
   4# RM2U.RM2Closure (interface layer)
   5
   6This file is meant to host the fully classical “coercive \(\ell=2\) ⇒ RM2” closure steps
   7from `navier-dec-12-rewrite.tex`, namely:
   8
   9- coercive \(\ell=2\) control ⇒ finiteness of the log-critical shell moment `∫ |A|/r`,
  10- finiteness of that shell moment ⇒ boundedness of the affine/harmonic obstruction (RM2).
  11
  12For now, we keep the final “RM2 statement” abstract and provide a single *interface* hypothesis
  13to prevent scattering assumptions across the codebase. The plan is to later replace this
  14hypothesis with explicit proofs mirroring the TeX.
  15-/
  16
  17namespace IndisputableMonolith
  18namespace NavierStokes
  19namespace RM2U
  20
  21open MeasureTheory Set
  22
  23/-- Placeholder definition of “RM2 is closed” for a time-slice coefficient.
  24
  25In the manuscript, RM2 is equivalent to boundedness of the log-critical \(\ell=2\) tail moment.
  26We encode that equivalence in the simplest Lean-friendly way:
  27
  28`RM2Closed A := LogCriticalMomentFinite A`.
  29
  30Later we can refine this to match a more explicit fixed-frame compactness statement. -/
  31def RM2Closed (A : ℝ → ℝ) : Prop :=
  32  LogCriticalMomentFinite A
  33
  34/-- **Coercive \(\ell=2\) control ⇒ log-critical moment finiteness (RM2 in this simplified model).**
  35
  36This is the Lean translation of the manuscript’s one-line Cauchy–Schwarz argument:
  37
  38If `A ∈ L²((1,∞),dr)`, then `A/r ∈ L¹((1,∞),dr)` since `1/r ∈ L²((1,∞),dr)`.
  39
  40We package it in a way that is robust to later refactors of what “RM2 closed” means:
  41at minimum, coercive control implies the log-critical shell moment is absolutely convergent.
  42-/
  43theorem rm2Closed_of_coerciveL2Bound (P : RM2URadialProfile) :
  44    CoerciveL2Bound P → RM2Closed P.A := by
  45  intro hco
  46  -- Unpack the L² control of `A`.
  47  have hA2 : IntegrableOn (fun r : ℝ => (P.A r) ^ 2) (Set.Ioi (1 : ℝ)) volume :=
  48    hco.1
  49
  50  -- We will dominate `‖A(r)/r‖` by `A(r)^2 + r^(-2)` on `r > 1`.
  51  -- First, record integrability of `r ^ (-2)` (real power) on `(1,∞)`.
  52  have hRpow : IntegrableOn (fun r : ℝ => r ^ (-2 : ℝ)) (Set.Ioi (1 : ℝ)) volume := by
  53    -- `(-2) < -1`, so the real power is integrable at infinity.
  54    have hlt : (-2 : ℝ) < -1 := by linarith
  55    simpa using (integrableOn_Ioi_rpow_of_lt (a := (-2 : ℝ)) (c := (1 : ℝ)) hlt zero_lt_one)
  56
  57  have hdom : IntegrableOn (fun r : ℝ => (P.A r) ^ 2 + r ^ (-2 : ℝ)) (Set.Ioi (1 : ℝ)) volume :=
  58    hA2.add hRpow
  59
  60  -- `A/r` is continuous on `(1,∞)` (hence ae-strongly measurable on that set),
  61  -- because `HasDerivAt` implies continuity pointwise.
  62  have hcontA : ContinuousOn P.A (Set.Ioi (1 : ℝ)) := by
  63    intro x hx
  64    exact (P.hA x hx).continuousAt.continuousWithinAt
  65
  66  have hcontInv : ContinuousOn (fun r : ℝ => r⁻¹) (Set.Ioi (1 : ℝ)) := by
  67    -- `inv` is continuous away from `0`; `(1,∞) ⊆ {0}ᶜ`.
  68    refine (continuousOn_inv₀ : ContinuousOn (Inv.inv : ℝ → ℝ) ({0}ᶜ)).mono ?_
  69    intro r hr
  70    have : (r : ℝ) ≠ 0 := ne_of_gt (lt_trans (by norm_num : (0 : ℝ) < 1) (mem_Ioi.1 hr))
  71    simpa [Set.mem_compl_singleton_iff] using this
  72
  73  have hcontDiv : ContinuousOn (fun r : ℝ => P.A r / r) (Set.Ioi (1 : ℝ)) := by
  74    -- `A/r = A * r⁻¹`.
  75    simpa [div_eq_mul_inv] using hcontA.mul hcontInv
  76
  77  have hf_meas : AEStronglyMeasurable (fun r : ℝ => P.A r / r)
  78      (MeasureTheory.volume.restrict (Set.Ioi (1 : ℝ))) := by
  79    exact hcontDiv.aestronglyMeasurable measurableSet_Ioi
  80
  81  -- Pointwise domination on `(1,∞)`:
  82  -- `‖A/r‖ = |A| * r^(-1) ≤ |A|^2 + (r^(-1))^2 = A^2 + r^(-2)`.
  83  have h_le :
  84      ∀ᵐ r : ℝ ∂(MeasureTheory.volume.restrict (Set.Ioi (1 : ℝ))),
  85        ‖P.A r / r‖ ≤ (P.A r) ^ 2 + r ^ (-2 : ℝ) := by
  86    refine (ae_restrict_mem measurableSet_Ioi).mono ?_
  87    intro r hr
  88    have hr0 : 0 ≤ r := le_trans (by norm_num : (0 : ℝ) ≤ 1) (mem_Ioi.1 hr).le
  89    have hrpos : 0 < r := lt_trans (by norm_num : (0 : ℝ) < 1) (mem_Ioi.1 hr)
  90    -- Rewrite norms as abs; keep `|A| / r` form for easier final `simp`.
  91    simp only [Real.norm_eq_abs, abs_div, abs_of_pos hrpos]
  92    -- Reduce to an AM-GM style inequality.
  93    -- Let a = |A r|, b = r^(-1).
  94    have ha : 0 ≤ |P.A r| := abs_nonneg (P.A r)
  95    have hb : 0 ≤ r ^ (-1 : ℝ) := by
  96      -- real power of a nonnegative base is nonnegative
  97      exact Real.rpow_nonneg hr0 (-1 : ℝ)
  98    -- `|A| * r^(-1) ≤ |A|^2 + (r^(-1))^2` using `two_mul_le_add_sq` and `ab ≤ 2ab`.
  99    have hab0 : 0 ≤ |P.A r| * (r ^ (-1 : ℝ)) := mul_nonneg ha hb
 100    have h2 : 2 * |P.A r| * (r ^ (-1 : ℝ)) ≤ |P.A r| ^ 2 + (r ^ (-1 : ℝ)) ^ 2 :=
 101      two_mul_le_add_sq (|P.A r|) (r ^ (-1 : ℝ))
 102    have h1 : |P.A r| * (r ^ (-1 : ℝ)) ≤ 2 * |P.A r| * (r ^ (-1 : ℝ)) := by
 103      -- since `0 ≤ ab`, we have `ab ≤ 2ab`
 104      nlinarith
 105    have hmain : |P.A r| * (r ^ (-1 : ℝ)) ≤ |P.A r| ^ 2 + (r ^ (-1 : ℝ)) ^ 2 :=
 106      le_trans h1 h2
 107    -- Rewrite `(r^(-1))^2` as `r^(-2)` and `|A|^2` as `A^2`.
 108    have hrpow2 : (r ^ (-1 : ℝ)) ^ 2 = r ^ (-2 : ℝ) := by
 109      -- `r^(-2) = (r^(-1))^2` for `r ≥ 0`
 110      have : r ^ ((-1 : ℝ) * (2 : ℝ)) = (r ^ (-1 : ℝ)) ^ (2 : ℝ) :=
 111        (Real.rpow_mul (x := r) hr0 (-1 : ℝ) (2 : ℝ))
 112      -- convert real exponent `2` to nat power `2`
 113      simpa [show (-1 : ℝ) * (2 : ℝ) = (-2 : ℝ) by ring, Real.rpow_two] using this.symm
 114    -- Convert `|A| / r` to `|A| * r⁻¹` and compare `r⁻¹` with `r ^ (-1)`.
 115    have hdiv : |P.A r| / r = |P.A r| * r⁻¹ := by
 116      simp [div_eq_mul_inv]
 117
 118    -- On `r > 0`, `r ^ (-1 : ℝ) = r⁻¹`.
 119    have hrpow1 : r ^ (-1 : ℝ) = r⁻¹ := by
 120      simpa using (Real.rpow_neg_one r)
 121
 122    -- Finish: rewrite everything into the target shape.
 123    -- `|A|^2 = A^2` in ℝ, and `(r⁻¹)^2 = (r^2)⁻¹`.
 124    -- Also use `hrpow2` to replace `(r^(-1))^2` by `r^(-2)`.
 125    -- We keep the RHS as `A^2 + r^(-2)` to match the outer goal.
 126    have : |P.A r| / r ≤ (P.A r) ^ 2 + r ^ (-2 : ℝ) := by
 127      -- start from the inequality on `|A| * r^(-1)`
 128      have hmain' :
 129          |P.A r| * r⁻¹ ≤ |P.A r| ^ 2 + (r⁻¹) ^ 2 := by
 130        -- replace `r^(-1)` with `r⁻¹` in `hmain`
 131        simpa [hrpow1] using hmain
 132      -- rewrite the RHS and LHS into the requested form
 133      -- `(r⁻¹)^2 = (r^2)⁻¹`, and `(P.A r)^2 = |P.A r|^2`.
 134      -- Then replace `(r⁻¹)^2` by `r^(-2)` via `hrpow2`.
 135      -- Finally convert `|A|*r⁻¹` to `|A|/r`.
 136      -- Note: `hrpow2` is about `r^(-1)` not `r⁻¹`; use `hrpow1` to bridge.
 137      have hrpow2' : (r⁻¹) ^ 2 = r ^ (-2 : ℝ) := by
 138        -- `(r⁻¹)^2 = (r^(-1))^2 = r^(-2)`
 139        simpa [hrpow1] using hrpow2
 140      -- and `|A|^2 = A^2`
 141      have habs2 : |P.A r| ^ 2 = (P.A r) ^ 2 := by
 142        simp [pow_two]
 143      -- assemble
 144      calc
 145        |P.A r| / r = |P.A r| * r⁻¹ := hdiv
 146        _ ≤ |P.A r| ^ 2 + (r⁻¹) ^ 2 := hmain'
 147        _ = (P.A r) ^ 2 + r ^ (-2 : ℝ) := by
 148              simp [habs2, hrpow2']
 149    exact this
 150
 151  -- Conclude integrability by domination.
 152  -- We use the `Integrable.mono'` lemma on the restricted measure.
 153  have : Integrable (fun r : ℝ => P.A r / r) (MeasureTheory.volume.restrict (Set.Ioi (1 : ℝ))) :=
 154    (hdom.integrable).mono' hf_meas h_le
 155
 156  -- Repackage as `IntegrableOn` and match `RM2Closed`.
 157  simpa [RM2Closed, LogCriticalMomentFinite, IntegrableOn] using this
 158
 159/-- Interface hypothesis: coercive \(\ell=2\) control implies RM2 closure for this profile.
 160
 161This is *not* intended to remain an assumption long-term; it is a single placeholder
 162so that downstream developments can depend on one named lemma instead of ad hoc assumptions. -/
 163structure CoerciveImpliesRM2Hypothesis (P : RM2URadialProfile) : Prop where
 164  implies : CoerciveL2Bound P → RM2Closed P.A
 165
 166namespace CoerciveImpliesRM2Hypothesis
 167
 168/-- Construct the (now purely formal) interface hypothesis from the proved lemma
 169`rm2Closed_of_coerciveL2Bound`. This is here for backwards compatibility: downstream code can
 170depend on a named hypothesis while the file still remains `sorry`/`axiom` free. -/
 171theorem of_proved (P : RM2URadialProfile) : CoerciveImpliesRM2Hypothesis P :=
 172  ⟨rm2Closed_of_coerciveL2Bound (P := P)⟩
 173
 174end CoerciveImpliesRM2Hypothesis
 175
 176end RM2U
 177end NavierStokes
 178end IndisputableMonolith
 179

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