HarmonicApproximation #
Ported from scottnarmstrong/Superdiffusion at 7f20476385d4af418f110303085ad0740c9eba46. Module imports, support namespace and local option directives adapted for Lean Pool.
Harmonic approximation at good scales — [ABK] l.harmonic.approximation.good.scales #
On a good scale, a Dirichlet solution on a triadic cube is approximated in
L^2 by a harmonic replacement on the child cube, with an error controlled by
the flux-corrected coarse-graining error together with the oscillation of the
solution, the fractional force seminorm and the boundary gradient data. Two
clauses are stated: a general one valid up to the boundary, and a sharper
frontier-empty specialization carrying no gradient-of-datum legs.
Proved; reduces to the standard axioms.
theorem
Algsuperdiff.Frozen.Section4.harmonic_approximation_good_scales
(d : ℕ)
:
∃ (C : ℝ),
0 < C ∧ ∀ (M : Section3.ABKModel d),
∀ s ∈ Set.Icc (64 * M.gamma) 1,
M.gamma ≤ C⁻¹ * Section3.Disorder.cstar M ^ 10 →
M.gamma * |Real.log M.gamma| ^ 2 ≤ (s / 8).rpow (3 / 2) * Section3.Disorder.cstar M ^ 2 * (C⁻¹ * s ^ 4) →
∀ (hs : 0 < s) (L m n : ℤ),
m ≤ L →
n + 3 ≤ m →
∀ (x z : HCPolySupport.Vec d),
x ∈ HCPolySupport.openCubeSet (HCPolySupport.originCube d m) →
z ∈ HCPolySupport.openCubeSet (HCPolySupport.originCube d m) →
(fun (y : HCPolySupport.Vec d) => x + y) '' HCPolySupport.openCubeSet (HCPolySupport.originCube d n) ⊆
(fun (y : HCPolySupport.Vec d) => z + y) '' HCPolySupport.openCubeSet (HCPolySupport.originCube d (n + 1)) ∩ HCPolySupport.openCubeSet (HCPolySupport.originCube d m) →
∀ᵐ (omega : Section3.Cutoff.CutoffSample d) ∂↑(Section3.Cutoff.cutoffSampleLaw M), ∀
(u h :
HCPolySupport.H1Function (HCPolySupport.openCubeSet (HCPolySupport.originCube d m)))
(g : HCPolySupport.Vec d → HCPolySupport.Vec d),
Section4.Support.IsDirichletSolutionOn
(Section3.Cutoff.coefficientCutoff M.nu L omega).toCoeffField
(HCPolySupport.originCube d m) u h g →
MeasureTheory.MemLp g 2
(Section4.Support.normalizedVolumeMeasureOn
(HCPolySupport.openCubeSet (HCPolySupport.originCube d m))) →
MeasureTheory.MemLp (HCPolySupport.Gagliardo.gagliardoKernel s 2 g) 2
(Section4.Support.normalizedGagliardoMeasureOn
(HCPolySupport.openCubeSet (HCPolySupport.originCube d m))) →
MeasureTheory.MemLp (HCPolySupport.Gagliardo.gagliardoKernel s 2 h.grad) 2
(Section4.Support.normalizedGagliardoMeasureOn
(HCPolySupport.openCubeSet (HCPolySupport.originCube d m))) →
∀
(v :
HCPolySupport.H1Function
((fun (y : HCPolySupport.Vec d) => x + y) '' HCPolySupport.openCubeSet (HCPolySupport.originCube d n)))
(w :
HCPolySupport.H10Function
((fun (y : HCPolySupport.Vec d) => x + y) '' HCPolySupport.openCubeSet (HCPolySupport.originCube d n))),
Section4.Support.IsWeaklyHarmonicOn
((fun (y : HCPolySupport.Vec d) => x + y) '' HCPolySupport.openCubeSet (HCPolySupport.originCube d n))
v →
(∀ (y : HCPolySupport.Vec d), v.toFun y = u.toFun y - w.toFun y) →
(∀ (y : HCPolySupport.Vec d), v.grad y = u.grad y - w.grad y) →
(goodEventAt M (Section4.Support.cgEllipLowerConstant d) (n + 3) z
⟨s / 8, ⋯⟩ (C⁻¹ * s ^ 4)).indicator
(fun (_omega' : Section3.Cutoff.CutoffSample d) =>
MeasureTheory.eLpNorm
(fun (y : HCPolySupport.Vec d) => u.toFun y - v.toFun y) 2
(Section4.Support.normalizedVolumeMeasureOn
((fun (y : HCPolySupport.Vec d) => x + y) '' HCPolySupport.openCubeSet (HCPolySupport.originCube d n))))
omega ≤ ENNReal.ofReal
(C * s.rpow (-4) * Section4.Support.fluxCorrectedErrorRepresentative M L
(n + 3) ⟨s / 8, ⋯⟩
(Section3.Cutoff.translateCutoffSample z omega)) * (MeasureTheory.eLpNorm
(fun (y : HCPolySupport.Vec d) =>
u.toFun y - HCPolySupport.volumeAverage
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 3)) ∩ HCPolySupport.openCubeSet
(HCPolySupport.originCube d m))
u.toFun)
2
(Section4.Support.normalizedVolumeMeasureOn
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 3)) ∩ HCPolySupport.openCubeSet
(HCPolySupport.originCube d m))) + ENNReal.ofReal
(s.rpow (-(3 / 2)) * Real.rpow 3 ↑n * ‖HCPolySupport.volumeAverageVec
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 2)) ∩ HCPolySupport.openCubeSet
(HCPolySupport.originCube d m))
h.grad‖)) + ENNReal.ofReal
(C * s.rpow (-7) * (↑(Section3.Annealed.sigmaBar M n))⁻¹ * Real.rpow 3 ((1 + s) * ↑n)) * Section4.Support.normalizedGagliardoESeminormOn
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 3)) ∩ HCPolySupport.openCubeSet (HCPolySupport.originCube d m))
s g + ENNReal.ofReal (C * s.rpow (-6) * Real.rpow 3 ((1 + s) * ↑n)) * Section4.Support.normalizedGagliardoESeminormOn
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 3)) ∩ HCPolySupport.openCubeSet (HCPolySupport.originCube d m))
s h.grad + ENNReal.ofReal
(C * s.rpow (-6) * Section4.Support.fluxCorrectedErrorRepresentative M L
(n + 3) ⟨s / 8, ⋯⟩
(Section3.Cutoff.translateCutoffSample z omega) * Real.rpow 3 ↑n * ‖HCPolySupport.volumeAverageVec
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 2)) ∩ HCPolySupport.openCubeSet (HCPolySupport.originCube d m))
h.grad‖) ∧ ((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet (HCPolySupport.originCube d (n + 2)) ∩ frontier
(HCPolySupport.openCubeSet (HCPolySupport.originCube d m)) = ∅ →
(goodEventAt M (Section4.Support.cgEllipLowerConstant d) (n + 2) z
⟨s / 8, ⋯⟩ (1 / 2)).indicator
(fun (_omega' : Section3.Cutoff.CutoffSample d) =>
MeasureTheory.eLpNorm
(fun (y : HCPolySupport.Vec d) => u.toFun y - v.toFun y) 2
(Section4.Support.normalizedVolumeMeasureOn
((fun (y : HCPolySupport.Vec d) => x + y) '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d n))))
omega ≤ ENNReal.ofReal
(C * s.rpow (-4) * Section4.Support.fluxCorrectedErrorRepresentative M L
(n + 2) ⟨s / 8, ⋯⟩
(Section3.Cutoff.translateCutoffSample z omega)) * MeasureTheory.eLpNorm
(fun (y : HCPolySupport.Vec d) =>
u.toFun y - HCPolySupport.volumeAverage
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 2)) ∩ HCPolySupport.openCubeSet
(HCPolySupport.originCube d m))
u.toFun)
2
(Section4.Support.normalizedVolumeMeasureOn
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 2)) ∩ HCPolySupport.openCubeSet
(HCPolySupport.originCube d m))) + ENNReal.ofReal
(C * s.rpow (-(19 / 2)) * (↑(Section3.Annealed.sigmaBar M n))⁻¹ * Real.rpow 3 ((1 + s) * ↑n)) * Section4.Support.normalizedGagliardoESeminormOn
((fun (y' : HCPolySupport.Vec d) => z + y') '' HCPolySupport.openCubeSet
(HCPolySupport.originCube d (n + 2)) ∩ HCPolySupport.openCubeSet (HCPolySupport.originCube d m))
s g)