pith. machine review for the scientific record. sign in

IndisputableMonolith.NumberTheory.RiemannHypothesis.CertificateWindow

IndisputableMonolith/NumberTheory/RiemannHypothesis/CertificateWindow.lean · 243 lines · 14 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import IndisputableMonolith.NumberTheory.RiemannHypothesis.WindowToOscillation
   2import Mathlib.Analysis.LConvolution
   3
   4/-!
   5# RH (BRF route): concrete certificate windows `φ_{L,t0}`
   6
   7This file defines the actual **window functions** used in the certificate layer:
   8
   9- a **flat-top window** built from a profile `ψ` with a unit plateau on `[-1,1]`,
  10  scaled to mass `1` by `1/L`;
  11- a **Poisson-plateau window** (abstractly) as a Poisson-kernel convolution of the profile,
  12  also scaled by `1/L`.
  13
  14We then instantiate the B1 bridge from `WindowToOscillation`:
  15
  16`(∫ φ_{L,t0} d(-w') ≤ D) + (φ_{L,t0} ≥ c on Ioo(t0-L,t0+L))  ⇒  oscOn w (Icc(t0-L,t0+L)) ≤ D / c`.
  17-/
  18
  19namespace IndisputableMonolith
  20namespace NumberTheory
  21namespace RiemannHypothesis
  22
  23open scoped Real Topology ENNReal MeasureTheory
  24open MeasureTheory Filter Set
  25
  26/-!
  27## Flat-top window
  28-/
  29
  30/-- The (nonnegative) flat-top window associated to a profile `ψ : ℝ → ℝ` at scale `L>0`
  31and center `t0`:
  32\[
  33  \varphi_{L,t0}(t) := \mathrm{ofReal}\Big(\frac{\psi((t-t0)/L)}{L}\Big).
  34\]
  35
  36This matches the manuscript’s `L^{-1} ψ((t-t0)/L)` when `ψ ≥ 0`.
  37-/
  38noncomputable def certificateWindowFlat (ψ : ℝ → ℝ) (L t0 : ℝ) : ℝ → ℝ≥0∞ :=
  39  fun t => ENNReal.ofReal (ψ ((t - t0) / L) / L)
  40
  41namespace certificateWindowFlat
  42
  43variable {ψ : ℝ → ℝ} {L t0 : ℝ}
  44
  45lemma lower_of_plateau_one (hL : 0 < L)
  46    (hψ : ∀ x : ℝ, |x| ≤ 1 → ψ x = 1) :
  47    ∀ t, t ∈ Set.Ioo (t0 - L) (t0 + L) →
  48      ENNReal.ofReal (1 / L) ≤ certificateWindowFlat ψ L t0 t := by
  49  intro t ht
  50  have hlt : |t - t0| < L := by
  51    have h1 : t - t0 < L := by linarith [ht.2]
  52    have h2 : -L < t - t0 := by linarith [ht.1]
  53    exact abs_lt.2 ⟨h2, h1⟩
  54  have habs : |(t - t0) / L| ≤ 1 := by
  55    have habs' : |(t - t0) / L| < 1 := by
  56      -- `|(t-t0)/L| = |t-t0|/L < 1` since `|t-t0| < L` and `L>0`.
  57      have : |t - t0| / L < 1 := by
  58        -- rewrite as `|t-t0| < 1*L`.
  59        have : |t - t0| < 1 * L := by simpa using hlt
  60        -- `b / c < a ↔ b < a*c`
  61        exact (div_lt_iff₀ hL).2 (by simpa [one_mul] using this)
  62      simpa [abs_div, abs_of_pos hL] using this
  63    exact le_of_lt habs'
  64  have hψ1 : ψ ((t - t0) / L) = 1 := hψ _ habs
  65  -- On the plateau, the window equals `ofReal (1/L)`.
  66  simp [certificateWindowFlat, hψ1, one_div]
  67
  68end certificateWindowFlat
  69
  70/-!
  71## Poisson kernel and Poisson-plateau window (scaled)
  72
  73We define the normalized Poisson kernel on `ℝ` (as an `ℝ≥0∞`-valued function) and the
  74additive `⋆ₗ` convolution window `P_b * ψ`, then scale it in the same `L^{-1}` manner.
  75
  76This is set up so the manuscript constant
  77`c0(ψ) := inf_{0<b≤1, |x|≤1} (P_b * ψ)(x)` can be plugged in later.
  78-/
  79
  80/-- Normalized Poisson kernel on `ℝ` (as a nonnegative `ℝ≥0∞` function). -/
  81noncomputable def poissonKernel (b : ℝ) : ℝ → ℝ≥0∞ :=
  82  fun x => ENNReal.ofReal ((1 / Real.pi) * (b / (b ^ 2 + x ^ 2)))
  83
  84/-- Poisson convolution of a profile `ψ : ℝ → ℝ≥0∞` at height `b`. -/
  85noncomputable def poissonConv (b : ℝ) (ψ : ℝ → ℝ≥0∞) : ℝ → ℝ≥0∞ :=
  86  (poissonKernel b ⋆ₗ[volume] ψ)
  87
  88/-- The value-set used to define the manuscript constant
  89\[
  90  c_0(ψ) := \inf_{0<b\le 1,\ |x|\le 1} (P_b * ψ)(x).
  91\]
  92
  93We store the infimum in `ℝ≥0∞` since `poissonConv` is `ℝ≥0∞`-valued. -/
  94def poissonPlateauValSet (ψ : ℝ → ℝ≥0∞) : Set ℝ≥0∞ :=
  95  { y | ∃ b : ℝ, 0 < b ∧ b ≤ 1 ∧ ∃ x : ℝ, |x| ≤ 1 ∧ y = poissonConv b ψ x }
  96
  97/-- The Poisson plateau constant `c0(ψ)` as an `ℝ≥0∞` infimum. -/
  98noncomputable def c0PoissonENN (ψ : ℝ → ℝ≥0∞) : ℝ≥0∞ :=
  99  sInf (poissonPlateauValSet ψ)
 100
 101/-- Convenience real-valued version `c0(ψ)` defined as `toReal` of the `ℝ≥0∞` infimum.
 102
 103To use it as a genuine plateau constant (rather than defaulting to `0` when `= ⊤`),
 104you will typically assume `c0PoissonENN ψ ≠ ⊤` and `0 < c0Poisson ψ`. -/
 105noncomputable def c0Poisson (ψ : ℝ → ℝ≥0∞) : ℝ :=
 106  (c0PoissonENN ψ).toReal
 107
 108lemma c0PoissonENN_le_poissonConv {ψ : ℝ → ℝ≥0∞} {b x : ℝ}
 109    (hb0 : 0 < b) (hb1 : b ≤ 1) (hx : |x| ≤ 1) :
 110    c0PoissonENN ψ ≤ poissonConv b ψ x := by
 111  -- `Inf S ≤ a` for any `a ∈ S`.
 112  unfold c0PoissonENN
 113  refine sInf_le ?_
 114  exact ⟨b, hb0, hb1, x, hx, rfl⟩
 115
 116lemma ofReal_c0Poisson_le_poissonConv {ψ : ℝ → ℝ≥0∞} {b x : ℝ}
 117    (hc0_top : c0PoissonENN ψ ≠ ⊤) (hb0 : 0 < b) (hb1 : b ≤ 1) (hx : |x| ≤ 1) :
 118    ENNReal.ofReal (c0Poisson ψ) ≤ poissonConv b ψ x := by
 119  have h0 : c0PoissonENN ψ ≤ poissonConv b ψ x :=
 120    c0PoissonENN_le_poissonConv (ψ := ψ) (b := b) (x := x) hb0 hb1 hx
 121  -- Rewrite `ofReal (toReal (c0PoissonENN ψ))` back to `c0PoissonENN ψ`.
 122  have hrew : ENNReal.ofReal (c0Poisson ψ) = c0PoissonENN ψ := by
 123    simpa [c0Poisson] using (ENNReal.ofReal_toReal (a := c0PoissonENN ψ) hc0_top)
 124  simpa [hrew] using h0
 125
 126lemma hpoisson_plateau_of_c0Poisson {ψ : ℝ → ℝ≥0∞} {b : ℝ}
 127    (hc0_top : c0PoissonENN ψ ≠ ⊤) (hb0 : 0 < b) (hb1 : b ≤ 1) :
 128    ∀ x : ℝ, |x| ≤ 1 → ENNReal.ofReal (c0Poisson ψ) ≤ poissonConv b ψ x := by
 129  intro x hx
 130  exact ofReal_c0Poisson_le_poissonConv (ψ := ψ) (b := b) (x := x) hc0_top hb0 hb1 hx
 131
 132/-- The scaled Poisson-plateau window at scale `L` and center `t0`:
 133\[
 134  \varphi^{P}_{L,t0}(t) := \frac{1}{L}\,(P_b * ψ)\big((t-t0)/L\big),
 135\]
 136encoded in `ℝ≥0∞` using `ENNReal.ofReal`.
 137
 138This matches the user-facing “`c0(ψ)/L` plateau” behavior on `t ∈ (t0-L,t0+L)` when
 139`(P_b*ψ)(x) ≥ c0(ψ)` for `|x|≤1`.
 140-/
 141noncomputable def certificateWindowPoisson (b : ℝ) (ψ : ℝ → ℝ≥0∞) (L t0 : ℝ) : ℝ → ℝ≥0∞ :=
 142  fun t => (ENNReal.ofReal (1 / L)) * (poissonConv b ψ ((t - t0) / L))
 143
 144/-!
 145## Instantiations of the B1 bridge (`window` ⇒ `oscOn`) on a Whitney interval
 146-/
 147
 148theorem oscOn_Icc_whitney_le_mul_L_of_flatTop
 149    {w : ℝ → ℝ} (hw : Antitone w) (hw_rc : ∀ x, ContinuousWithinAt w (Ici x) x)
 150    {ψ : ℝ → ℝ} {L t0 D : ℝ} (hL : 0 < L) (hD : 0 ≤ D)
 151    (hψ : ∀ x : ℝ, |x| ≤ 1 → ψ x = 1)
 152    (hlin :
 153      ∫⁻ t, certificateWindowFlat ψ L t0 t ∂(stieltjesNeg.μ (w := w) (hw := hw) (hw_rc := hw_rc))
 154        ≤ ENNReal.ofReal D) :
 155    oscOn w (Set.Icc (t0 - L) (t0 + L)) ≤ D * L := by
 156  have hab : (t0 - L) < (t0 + L) := by linarith
 157  have hc : 0 < (1 / L) := one_div_pos.2 hL
 158  have hφ_lower :
 159      ∀ t, t ∈ Set.Ioo (t0 - L) (t0 + L) → ENNReal.ofReal (1 / L) ≤ certificateWindowFlat ψ L t0 t :=
 160    certificateWindowFlat.lower_of_plateau_one (ψ := ψ) (L := L) (t0 := t0) hL hψ
 161  have hosC :
 162      oscOn w (Set.Icc (t0 - L) (t0 + L)) ≤ D / (1 / L) := by
 163    simpa [Set.Ioo] using
 164      oscOn_Icc_le_div_of_window_lintegral_bound (w := w) hw hw_rc (a := t0 - L) (b := t0 + L)
 165        (D := D) (c := (1 / L)) hab hD hc hφ_lower hlin
 166  -- simplify `D / (1/L)` to `D*L`
 167  simpa [div_div, one_div] using (le_trans hosC (le_of_eq (by field_simp [hL.ne'])))
 168
 169theorem oscOn_Icc_whitney_le_div_c0_mul_L_of_poissonPlateau
 170    {w : ℝ → ℝ} (hw : Antitone w) (hw_rc : ∀ x, ContinuousWithinAt w (Ici x) x)
 171    {ψ : ℝ → ℝ≥0∞} {b L t0 D c0 : ℝ} (hL : 0 < L) (hD : 0 ≤ D) (hc0 : 0 < c0)
 172    (hpoisson_plateau :
 173      ∀ x : ℝ, |x| ≤ 1 → ENNReal.ofReal c0 ≤ poissonConv b ψ x)
 174    (hlin :
 175      ∫⁻ t, certificateWindowPoisson b ψ L t0 t
 176          ∂(stieltjesNeg.μ (w := w) (hw := hw) (hw_rc := hw_rc))
 177        ≤ ENNReal.ofReal D) :
 178    oscOn w (Set.Icc (t0 - L) (t0 + L)) ≤ (D / c0) * L := by
 179  have hab : (t0 - L) < (t0 + L) := by linarith
 180  -- lower bound `c0/L` on `Ioo`.
 181  have hφ_lower :
 182      ∀ t, t ∈ Set.Ioo (t0 - L) (t0 + L) →
 183        ENNReal.ofReal (c0 / L) ≤ certificateWindowPoisson b ψ L t0 t := by
 184    intro t ht
 185    have hlt : |t - t0| < L := by
 186      have h1 : t - t0 < L := by linarith [ht.2]
 187      have h2 : -L < t - t0 := by linarith [ht.1]
 188      exact abs_lt.2 ⟨h2, h1⟩
 189    have habs : |(t - t0) / L| ≤ 1 := by
 190      have habs' : |(t - t0) / L| < 1 := by
 191        have : |t - t0| / L < 1 := by
 192          have : |t - t0| < 1 * L := by simpa using hlt
 193          exact (div_lt_iff₀ hL).2 (by simpa [one_mul] using this)
 194        simpa [abs_div, abs_of_pos hL] using this
 195      exact le_of_lt habs'
 196    have hconv : ENNReal.ofReal c0 ≤ poissonConv b ψ ((t - t0) / L) := hpoisson_plateau _ habs
 197    -- multiply by `1/L` to get `c0/L`.
 198    -- `ofReal (c0/L) = ofReal c0 * ofReal (1/L)` (since both nonnegative).
 199    have hrew : ENNReal.ofReal (c0 / L) = ENNReal.ofReal c0 * ENNReal.ofReal (1 / L) := by
 200      -- `c0 / L = c0 * (1/L)`
 201      simpa [div_eq_mul_inv] using (ENNReal.ofReal_mul (p := c0) (q := (1 / L)) (le_of_lt hc0))
 202    have hrew' : ENNReal.ofReal (c0 / L) = ENNReal.ofReal (1 / L) * ENNReal.ofReal c0 := by
 203      simpa [mul_comm] using hrew
 204    -- Now: multiply the plateau inequality by `ofReal (1/L)`.
 205    have hmul :
 206        ENNReal.ofReal (1 / L) * ENNReal.ofReal c0
 207          ≤ ENNReal.ofReal (1 / L) * poissonConv b ψ ((t - t0) / L) :=
 208      mul_le_mul_right hconv (ENNReal.ofReal (1 / L))
 209    -- Repackage as the window lower bound.
 210    simpa [certificateWindowPoisson, hrew', mul_assoc] using hmul
 211  -- Apply the generic B1 bridge with `c = c0/L`.
 212  have hc : 0 < (c0 / L) := by exact div_pos hc0 hL
 213  have hosC :
 214      oscOn w (Set.Icc (t0 - L) (t0 + L)) ≤ D / (c0 / L) := by
 215    simpa using
 216      oscOn_Icc_le_div_of_window_lintegral_bound (w := w) hw hw_rc (a := t0 - L) (b := t0 + L)
 217        (D := D) (c := (c0 / L)) hab hD hc hφ_lower hlin
 218  -- simplify `D / (c0/L) = (D/c0) * L`.
 219  have : D / (c0 / L) = (D / c0) * L := by
 220    field_simp [hL.ne', (ne_of_gt hc0)]
 221  simpa [this, mul_assoc] using hosC
 222
 223theorem oscOn_Icc_whitney_le_div_c0Poisson_mul_L_of_poissonPlateau
 224    {w : ℝ → ℝ} (hw : Antitone w) (hw_rc : ∀ x, ContinuousWithinAt w (Ici x) x)
 225    {ψ : ℝ → ℝ≥0∞} {b L t0 D : ℝ} (hL : 0 < L) (hD : 0 ≤ D)
 226    (hb0 : 0 < b) (hb1 : b ≤ 1)
 227    (hc0_top : c0PoissonENN ψ ≠ ⊤) (hc0 : 0 < c0Poisson ψ)
 228    (hlin :
 229      ∫⁻ t, certificateWindowPoisson b ψ L t0 t
 230          ∂(stieltjesNeg.μ (w := w) (hw := hw) (hw_rc := hw_rc))
 231        ≤ ENNReal.ofReal D) :
 232    oscOn w (Set.Icc (t0 - L) (t0 + L)) ≤ (D / (c0Poisson ψ)) * L := by
 233  -- This is the previous theorem, with `hpoisson_plateau` derived from the definition of `c0Poisson`.
 234  refine
 235    oscOn_Icc_whitney_le_div_c0_mul_L_of_poissonPlateau (w := w) hw hw_rc (ψ := ψ) (b := b)
 236      (L := L) (t0 := t0) (D := D) (c0 := c0Poisson ψ) hL hD hc0
 237      (hpoisson_plateau := hpoisson_plateau_of_c0Poisson (ψ := ψ) (b := b) hc0_top hb0 hb1)
 238      (hlin := hlin)
 239
 240end RiemannHypothesis
 241end NumberTheory
 242end IndisputableMonolith
 243

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