-- Copyright (c) 2026 Scott Armstrong. -- Released under Apache 2.0 license. module public import ESS.Main.EssLocal public import CKN.Statements.TimePartial @[expose] public section open MeasureTheory Set Filter open scoped ENNReal open CKN CKN.Foundation.Parabolic set_option autoImplicit false noncomputable section namespace ESS /-- The local Escauriaza–Seregin–Šverák regularity theorem `thm:ess-local`. -/ theorem essLocal : ∀ u : ParabolicPoint → Vec3, ∀ Du : ParabolicPoint → Fin 3 → Vec3, ∀ p : ParabolicPoint → ℝ, AEStronglyMeasurable u (volume.restrict (spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0))) → AEStronglyMeasurable Du (volume.restrict (spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0))) → AEStronglyMeasurable p (volume.restrict (spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0))) → essSup (fun t : ℝ => ∫⁻ x in vec3Ball (0 : Vec3) 1, ‖u (x, t)‖ₑ ^ (2 : ℝ)) (volume.restrict (Ioo (-1) 0)) < ⊤ → (∫⁻ z in spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0), ‖u z‖ₑ ^ (2 : ℝ) + ‖Du z‖ₑ ^ (2 : ℝ)) < ⊤ → MemLp p (ENNReal.ofReal (3 / 2 : ℝ)) (volume.restrict (spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0))) → essSup (fun t : ℝ => ∫⁻ x in vec3Ball (0 : Vec3) 1, ENNReal.ofReal (vec3EuclideanNorm (u (x, t))) ^ (3 : ℝ)) (volume.restrict (Ioo (-1) 0)) < ⊤ → (∀ᵐ t ∂(volume.restrict (Ioo (-1) 0)), ∀ i : Fin 3, HasWeakGradientOn (vec3Ball (0 : Vec3) 1) (fun x => u (x, t) i) (fun x => Du (x, t) i)) → (∀ ψ : ParabolicPoint → ℝ, ψ ∈ spaceTimeTestFunction (V := ℝ) (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0) → ∫ z in spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0), ∑ i : Fin 3, u z i * spatialPartial ψ i z = 0) → (∀ φ : ParabolicPoint → Vec3, φ ∈ spaceTimeTestFunction (V := Vec3) (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0) → ∫ z in spaceTimeSet (vec3Ball (0 : Vec3) 1) (Ioo (-1) 0), (-(∑ i : Fin 3, u z i * timePartial (fun y => φ y i) z)) - ∑ i : Fin 3, ∑ j : Fin 3, u z i * u z j * spatialPartial (fun y => φ y i) j z + ∑ i : Fin 3, ∑ j : Fin 3, Du z i j * spatialPartial (fun y => φ y i) j z - p z * ∑ i : Fin 3, spatialPartial (fun y => φ y i) i z - ∑ i : Fin 3, ((0 : ParabolicPoint → Vec3) z i) * φ z i = 0) → ∃ γ : ℝ, 0 < γ ∧ γ ≤ 1 ∧ ∃ w : ParabolicPoint → Vec3, w =ᵐ[volume.restrict (parabolicCylinder (0 : Vec3) 0 (1 / 2 : ℝ))] u ∧ ParabolicHolderVecOn (closure (parabolicCylinder (0 : Vec3) 0 (1 / 2 : ℝ))) w γ := by exact ESS.Main.essLocal end ESS