Documentation

LeanPool.Superdiffusion.Algsuperdiff.Section3.Provider.Corrector.ShellSumConsumerTransport

ShellSumConsumerTransport #

Ported from scottnarmstrong/Superdiffusion at 7f20476385d4af418f110303085ad0740c9eba46. Module imports, support namespace and local option directives adapted for Lean Pool.

The shell-sum corrector limit at the recurrence consumer's data #

ABK26, e.def.w and e.perturb.assumption.

Algsuperdiff/Section3/Provider/Corrector/ShellSumCorrectorLimit.lean proves the corrector limit at the shell-sum law shellSumValuePathLaw M.P n m on the compact-open carrier, in the Helmholtz shape (IsPotentialZeroTraceOn / IsSolenoidalOn and the Neumann pair), at the forcing realize (valuePathForcing e).

The recurrence consumer (Provider/Diffusivity/ApproximateRecurrence/LocalizationRecurrenceMesh.lean) presents the same data in three different shapes:

This module removes all three differences.

What is supplied #

The shape of the corrector families #

The corrector families below are indexed by the increment path, not by the sample: wD : ℕ → C(Vec d, Mat d) → H10Function …. That is the honest reading of e.def.w, whose right-hand side depends on the sample only through k_m − k_{m−h}; it is also what makes the sample integral computable, since the integrand is then a pullback along shellSumValuePath n m ∘ Subtype.val and map_shellSumValuePath_cutoffSampleLaw applies. No uniqueness or solvability theorem is used or needed.

The forcing identification #

The recurrence consumer's forcing is the realization of the path forcing.

Corrector.streamForcing c ω n m e is c • (k_m − k_n)(·) e, and the realization of valuePathForcing (c • e) at the increment path is (k_m − k_n)(· + 0) (c • e); the two agree because matVecMul is linear in its vector argument. The gauge σ_{m−h}^{-1} of the consumer is therefore carried by the direction, at no cost.

The realization of the path forcing is continuous in space, at every path. This discharges the MemVectorL2 binder of the weak/Helmholtz bridge.

The subtype law transports to the shell-sum law #

The CutoffSample/ShellSeq law transport.

The law of the finite shell increment, read on the subtype of lower-tail-good sequences under cutoffSampleLaw M, is the shell-sum law of ShellSumCarrierLaw.lean. The only input is Cutoff.map_cutoffSampleLaw_val, i.e. that the good set is conull for M.P.

Integrals of pullbacks along the increment path are computed at the shell-sum law.

The corrector limit at the consumer's carrier #

theorem Algsuperdiff.Section3.Provider.Corrector.tendsto_integral_cutoffSample_cubeAverage_dirichlet_neumann_shellSum {d : ℕ} (M : ABKModel d) (e : HCPolySupport.Vec d) (n m : ℤ) {Dfam Nfam : ℕ → C(HCPolySupport.Vec d, HCPolySupport.Mat d) → HCPolySupport.Vec d → HCPolySupport.Vec d} (hDm : ∀ (K : ℕ), MeasureTheory.AEStronglyMeasurable (fun (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) => HCPolySupport.cubeAverage (HCPolySupport.originCube d ↑K) fun (x : HCPolySupport.Vec d) => HCPolySupport.vecDot (Dfam K f x) (Dfam K f x)) ↑(shellSumValuePathLaw M.P n m)) (hNm : ∀ (K : ℕ), MeasureTheory.AEStronglyMeasurable (fun (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) => HCPolySupport.cubeAverage (HCPolySupport.originCube d ↑K) fun (x : HCPolySupport.Vec d) => HCPolySupport.vecDot (Nfam K f x) (Nfam K f x)) ↑(shellSumValuePathLaw M.P n m)) (hDpot : ∀ (K : ℕ), ∀ᵐ (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) ∂↑(shellSumValuePathLaw M.P n m), HCPolySupport.IsPotentialZeroTraceOn (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K)) (Dfam K f)) (hDsol : ∀ (K : ℕ), ∀ᵐ (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) ∂↑(shellSumValuePathLaw M.P n m), HCPolySupport.IsSolenoidalOn (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K)) fun (x : HCPolySupport.Vec d) => Dfam K f x + (realize (valuePathForcing e) f x).toVec) (hNpot : ∀ (K : ℕ), ∀ᵐ (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) ∂↑(shellSumValuePathLaw M.P n m), HCPolySupport.IsPotentialOn (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K)) (Nfam K f)) (hNsol : ∀ (K : ℕ), ∀ᵐ (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) ∂↑(shellSumValuePathLaw M.P n m), HCPolySupport.IsSolenoidalZeroNormalTraceOn (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K)) fun (x : HCPolySupport.Vec d) => Nfam K f x + (realize (valuePathForcing e) f x).toVec) :

l.corrector.limit at the shell-sum forcing, with the sample integral taken over the consumer's carrier.

Same statement as tendsto_integral_cubeAverage_dirichlet_neumann_shellSum, with the ambient sample space C(Vec d, Mat d) replaced by CutoffSample d under cutoffSampleLaw M — the carrier the recurrence consumer integrates over. The corrector families are indexed by the increment path, which is what e.def.w gives.

theorem Algsuperdiff.Section3.Provider.Corrector.tendsto_integral_cutoffSample_cubeAverage_of_weakSolutions {d : ℕ} (M : ABKModel d) (c : ℝ) (e : HCPolySupport.Vec d) (n m : ℤ) (wD : (K : ℕ) → C(HCPolySupport.Vec d, HCPolySupport.Mat d) → HCPolySupport.H10Function (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K))) (wN : (K : ℕ) → C(HCPolySupport.Vec d, HCPolySupport.Mat d) → HCPolySupport.H1MeanZeroFunction (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K))) (hDm : ∀ (K : ℕ), MeasureTheory.AEStronglyMeasurable (fun (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) => HCPolySupport.cubeAverage (HCPolySupport.originCube d ↑K) fun (x : HCPolySupport.Vec d) => HCPolySupport.vecDot ((wD K f).grad x) ((wD K f).grad x)) ↑(shellSumValuePathLaw M.P n m)) (hNm : ∀ (K : ℕ), MeasureTheory.AEStronglyMeasurable (fun (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)) => HCPolySupport.cubeAverage (HCPolySupport.originCube d ↑K) fun (x : HCPolySupport.Vec d) => HCPolySupport.vecDot ((wN K f).toH1Function.grad x) ((wN K f).toH1Function.grad x)) ↑(shellSumValuePathLaw M.P n m)) (hD : ∀ (K : ℕ) (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)), HCPolySupport.IsZeroTraceDirichletRhsWeakSolution (fun (x : HCPolySupport.Vec d) => 1) (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K)) (wD K f) fun (x : HCPolySupport.Vec d) => -(realize (valuePathForcing (c • e)) f x).toVec) (hN : ∀ (K : ℕ) (f : C(HCPolySupport.Vec d, HCPolySupport.Mat d)), HCPolySupport.IsMeanZeroNeumannRhsWeakSolution (fun (x : HCPolySupport.Vec d) => 1) (HCPolySupport.openCubeSet (HCPolySupport.originCube d ↑K)) (wN K f) fun (x : HCPolySupport.Vec d) => -(realize (valuePathForcing (c • e)) f x).toVec) :

The corrector limit at the consumer's weak-solution data.

The corrector equations are entered in the shape the recurrence consumer produces — IsZeroTraceDirichletRhsWeakSolution 1 (openCubeSet □_K) (wD K f) (−𝐟) and its mean-zero Neumann counterpart — rather than in the Helmholtz shape; the translation is FreshShellSumWeakBridge. At an increment path the forcing 𝐟 here is the consumer's Corrector.streamForcing c ω n m e, by toVec_realize_valuePathForcing_shellSumValuePath, so the consumer's gauge σ_{m−h}^{-1} enters as the scalar c and needs no separate step.