Documentation

LeanPool.NavierStokesAndEuler.Euler.TransversePacketParity

Joint odd parity of the actual transverse velocity, its time derivative, and its corrector.

Reflection parity of the actual Gram-projected source evolution and its physical velocity.

Independence and symmetries of the actual forward solve #

The forced solution is independent of the selected homogeneous fundamental representation. Consequently coefficient symmetries pass to the solution without assuming any corresponding symmetry of that representation.

theorem EulerLinearDuhamel.Evolution.solution_independent {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {T : } {hT : 0 T} {B : C((Set.Icc 0 T), E →L[] E)} (U V : Evolution T hT B) (f : C((Set.Icc 0 T), E)) (a₀ : E) :
U.solution f a₀ = V.solution f a₀

The true forced path is independent of the fundamental evolution chosen to represent it.

theorem EulerLinearDuhamel.Evolution.solution_neg {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {T : } {hT : 0 T} {B : C((Set.Icc 0 T), E →L[] E)} (U : Evolution T hT B) (f : C((Set.Icc 0 T), E)) (a₀ : E) :
U.solution (-f) (-a₀) = -U.solution f a₀

Sign reversal of both data reverses the actual solution.

@[simp]
theorem EulerLinearDuhamel.Evolution.solution_zero {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {T : } {hT : 0 T} {B : C((Set.Icc 0 T), E →L[] E)} (U : Evolution T hT B) :
U.solution 0 0 = 0

Zero data vanish identically.

theorem EulerLinearDuhamel.solution_odd_under {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {P : Type u_2} (T : ) (hT : 0 T) (B : PC((Set.Icc 0 T), E →L[] E)) (U : (x : P) → Evolution T hT (B x)) (σ : PP) (hB : ∀ (x : P), B (σ x) = B x) (f : PC((Set.Icc 0 T), E)) (a₀ : PE) (hf : ∀ (x : P), f (σ x) = -f x) (ha₀ : ∀ (x : P), a₀ (σ x) = -a₀ x) (x : P) :
(U (σ x)).solution (f (σ x)) (a₀ (σ x)) = -(U x).solution (f x) (a₀ x)

Reflection or any other parameter symmetry is inherited from coefficients and data; no regularity or symmetry of the chosen propagators is required.

theorem EulerLinearDuhamel.solution_support_subset {E : Type u_1} [NormedAddCommGroup E] [NormedSpace E] [CompleteSpace E] {P : Type u_2} (T : ) (hT : 0 T) (B : PC((Set.Icc 0 T), E →L[] E)) (U : (x : P) → Evolution T hT (B x)) (f : PC((Set.Icc 0 T), E)) (a₀ : PE) :
(Function.support fun (x : P) => (U x).solution (f x) (a₀ x))Function.support f Function.support a₀

The actual forward solution stays in the union of the supports of its data.

Actual supported forward evolution preserves joint odd parity for even coefficients.

theorem EulerCylinderForwardParity.solution_reflection_neg (P : ) [Fact (0 < P)] {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace V] [CompleteSpace V] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (hSym : ∀ (x : EulerSmoothLimit.Space), -x S x S) (T : ) (hT : 0 T) (B : C((Set.Icc 0 T), BoundedContinuousFunction EulerSmoothLimit.Space (V →L[] V))) (hB : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (B t) (-x) = (B t) x) (U : EulerLinearDuhamel.Evolution T hT (EulerLpCylinderCoefficients.liftedOperatorPath P S hS T B)) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P V S hS))) (a₀ : (EulerLpCylinderPaths.Supported P V S hS)) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.supportedReflection P S hS hSym) (f t) = -f t) (ha₀ : (EulerCylinderFieldReflection.supportedReflection P S hS hSym) a₀ = -a₀) (t : (Set.Icc 0 T)) :
(EulerCylinderFieldReflection.supportedReflection P S hS hSym) ((U.solution f a₀) t) = -(U.solution f a₀) t
theorem EulerCylinderForwardParity.solution_full_reflection_neg (P : ) [Fact (0 < P)] {V : Type u_1} [NormedAddCommGroup V] [InnerProductSpace V] [CompleteSpace V] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (hSym : ∀ (x : EulerSmoothLimit.Space), -x S x S) (T : ) (hT : 0 T) (B : C((Set.Icc 0 T), BoundedContinuousFunction EulerSmoothLimit.Space (V →L[] V))) (hB : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (B t) (-x) = (B t) x) (U : EulerLinearDuhamel.Evolution T hT (EulerLpCylinderCoefficients.liftedOperatorPath P S hS T B)) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P V S hS))) (a₀ : (EulerLpCylinderPaths.Supported P V S hS)) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.reflection P) (f t) = -(f t)) (ha₀ : (EulerCylinderFieldReflection.reflection P) a₀ = -a₀) (t : (Set.Icc 0 T)) :
(EulerCylinderFieldReflection.reflection P) ((U.solution f a₀) t) = -((U.solution f a₀) t)
theorem EulerSourceCylinderParity.sourceGenerator_even {K : Type u_1} {U : Type u_2} {E : Type u_3} [TopologicalSpace K] [CompactSpace K] [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (Q Q₁ : EulerMeanCoefficients.SmoothCoefficientPath K (U →L[] E)) (c : ) (hc : 0 < c) (hQ : ∀ (t : K) (x : EulerSmoothLimit.Space) (v : U), c * v ^ 2 ((Q.field t) x) v ^ 2) (hE : ∀ (t : K) (x : EulerSmoothLimit.Space), (Q.field t) (-x) = (Q.field t) x) (hE₁ : ∀ (t : K) (x : EulerSmoothLimit.Space), (Q₁.field t) (-x) = (Q₁.field t) x) (t : K) (x : EulerSmoothLimit.Space) :
theorem EulerSourceCylinderParity.projectedForcing_reflection_neg (P : ) [Fact (0 < P)] {U : Type u_1} {E : Type u_2} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (T : ) (Q : EulerMeanCoefficients.SmoothCoefficientPath (↑(Set.Icc 0 T)) (U →L[] E)) (c : ) (hc : 0 < c) (hQ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space) (v : U), c * v ^ 2 ((Q.field t) x) v ^ 2) (hE : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q.field t) (-x) = (Q.field t) x) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P E S hS))) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.reflection P) (f t) = -(f t)) (t : (Set.Icc 0 T)) :
theorem EulerSourceCylinderParity.coordinates_reflection_neg (P : ) [Fact (0 < P)] {U : Type u_1} {E : Type u_2} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (hSym : ∀ (x : EulerSmoothLimit.Space), -x S x S) (T : ) (hT : 0 T) (Q Q₁ : EulerMeanCoefficients.SmoothCoefficientPath (↑(Set.Icc 0 T)) (U →L[] E)) (c : ) (hc : 0 < c) (hQ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space) (v : U), c * v ^ 2 ((Q.field t) x) v ^ 2) (hE : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q.field t) (-x) = (Q.field t) x) (hE₁ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q₁.field t) (-x) = (Q₁.field t) x) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P E S hS))) (a₀ : (EulerLpCylinderPaths.Supported P U S hS)) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.reflection P) (f t) = -(f t)) (ha₀ : (EulerCylinderFieldReflection.reflection P) a₀ = -a₀) (t : (Set.Icc 0 T)) :
(EulerCylinderFieldReflection.reflection P) ((EulerSourceCylinderEquation.coordinates P S hS T hT Q Q₁ c hc hQ f a₀) t) = -((EulerSourceCylinderEquation.coordinates P S hS T hT Q Q₁ c hc hQ f a₀) t)
theorem EulerSourceCylinderParity.velocity_reflection_neg (P : ) [Fact (0 < P)] {U : Type u_1} {E : Type u_2} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (hSym : ∀ (x : EulerSmoothLimit.Space), -x S x S) (T : ) (hT : 0 T) (Q Q₁ : EulerMeanCoefficients.SmoothCoefficientPath (↑(Set.Icc 0 T)) (U →L[] E)) (c : ) (hc : 0 < c) (hQ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space) (v : U), c * v ^ 2 ((Q.field t) x) v ^ 2) (hE : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q.field t) (-x) = (Q.field t) x) (hE₁ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q₁.field t) (-x) = (Q₁.field t) x) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P E S hS))) (a₀ : (EulerLpCylinderPaths.Supported P U S hS)) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.reflection P) (f t) = -(f t)) (ha₀ : (EulerCylinderFieldReflection.reflection P) a₀ = -a₀) (t : (Set.Icc 0 T)) :
(EulerCylinderFieldReflection.reflection P) ((EulerSourceCylinderEquation.velocity P S hS T hT Q Q₁ c hc hQ f a₀) t) = -((EulerSourceCylinderEquation.velocity P S hS T hT Q Q₁ c hc hQ f a₀) t)
theorem EulerSourceCylinderParity.coordinateDerivative_reflection_neg (P : ) [Fact (0 < P)] {U : Type u_1} {E : Type u_2} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (hSym : ∀ (x : EulerSmoothLimit.Space), -x S x S) (T : ) (hT : 0 T) (Q Q₁ : EulerMeanCoefficients.SmoothCoefficientPath (↑(Set.Icc 0 T)) (U →L[] E)) (c : ) (hc : 0 < c) (hQ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space) (v : U), c * v ^ 2 ((Q.field t) x) v ^ 2) (hE : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q.field t) (-x) = (Q.field t) x) (hE₁ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q₁.field t) (-x) = (Q₁.field t) x) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P E S hS))) (a₀ : (EulerLpCylinderPaths.Supported P U S hS)) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.reflection P) (f t) = -(f t)) (ha₀ : (EulerCylinderFieldReflection.reflection P) a₀ = -a₀) (t : (Set.Icc 0 T)) :
(EulerCylinderFieldReflection.reflection P) ((EulerSourceCylinderEquation.coordinateDerivative P S hS T hT Q Q₁ c hc hQ f a₀) t) = -((EulerSourceCylinderEquation.coordinateDerivative P S hS T hT Q Q₁ c hc hQ f a₀) t)
theorem EulerSourceCylinderParity.velocityDerivative_reflection_neg (P : ) [Fact (0 < P)] {U : Type u_1} {E : Type u_2} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] [NormedAddCommGroup E] [InnerProductSpace E] [CompleteSpace E] (S : Set EulerSmoothLimit.Space) (hS : MeasurableSet S) (hSym : ∀ (x : EulerSmoothLimit.Space), -x S x S) (T : ) (hT : 0 T) (Q Q₁ : EulerMeanCoefficients.SmoothCoefficientPath (↑(Set.Icc 0 T)) (U →L[] E)) (c : ) (hc : 0 < c) (hQ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space) (v : U), c * v ^ 2 ((Q.field t) x) v ^ 2) (hE : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q.field t) (-x) = (Q.field t) x) (hE₁ : ∀ (t : (Set.Icc 0 T)) (x : EulerSmoothLimit.Space), (Q₁.field t) (-x) = (Q₁.field t) x) (f : C((Set.Icc 0 T), (EulerLpCylinderPaths.Supported P E S hS))) (a₀ : (EulerLpCylinderPaths.Supported P U S hS)) (hf : ∀ (t : (Set.Icc 0 T)), (EulerCylinderFieldReflection.reflection P) (f t) = -(f t)) (ha₀ : (EulerCylinderFieldReflection.reflection P) a₀ = -a₀) (t : (Set.Icc 0 T)) :
(EulerCylinderFieldReflection.reflection P) ((EulerSourceCylinderEquation.velocityDerivative P S hS T hT Q Q₁ c hc hQ f a₀) t) = -((EulerSourceCylinderEquation.velocityDerivative P S hS T hT Q Q₁ c hc hQ f a₀) t)
theorem EulerTransversePacketProvider.Data.frame_even {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] (D : Data U) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) :
(D.frame.field t) (-x) = (D.frame.field t) x
theorem EulerTransversePacketProvider.Data.frameDerivative_even {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] (D : Data U) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (hM : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.M.field t) (-x) = (D.M.field t) x) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) :
theorem EulerTransversePacketProvider.Data.inverse_even {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] (D : Data U) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) :
(D.FInv.field t) (-x) = (D.FInv.field t) x
theorem EulerTransversePacketProvider.Data.normal_even {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] (D : Data U) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) :
(D.normal.field t) (-x) = (D.normal.field t) x

Forcing field, bundling path, orbit, raw_eq.

Equations
Instances For
    theorem EulerTransversePacketProvider.Forcing.path_reflection_neg {P : } [Fact (0 < P)] {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] {D : Data U} {raw : EulerPacketProfileRecursion.VectorField} (G : Forcing P D raw) (hraw : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ), raw (t, -x, -θ) = -raw (t, x, θ)) (t : (Set.Icc 0 D.T)) :
    theorem EulerTransversePacketProvider.Forcing.velocityPath_reflection_neg {P : } [Fact (0 < P)] {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] {D : Data U} {raw : EulerPacketProfileRecursion.VectorField} (G : Forcing P D raw) (I : InitialData P D) (hSym : ∀ (x : EulerSmoothLimit.Space), -x D.support x D.support) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (hM : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.M.field t) (-x) = (D.M.field t) x) (hraw : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ), raw (t, -x, -θ) = -raw (t, x, θ)) (hinit : (EulerCylinderFieldReflection.reflection P) I.value = -I.value) (t : (Set.Icc 0 D.T)) :
    theorem EulerTransversePacketProvider.Forcing.derivativePath_reflection_neg {P : } [Fact (0 < P)] {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] {D : Data U} {raw : EulerPacketProfileRecursion.VectorField} (G : Forcing P D raw) (I : InitialData P D) (hSym : ∀ (x : EulerSmoothLimit.Space), -x D.support x D.support) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (hM : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.M.field t) (-x) = (D.M.field t) x) (hraw : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ), raw (t, -x, -θ) = -raw (t, x, θ)) (hinit : (EulerCylinderFieldReflection.reflection P) I.value = -I.value) (t : (Set.Icc 0 D.T)) :
    theorem EulerTransversePacketProvider.Forcing.vector_odd {P : } [Fact (0 < P)] {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] {D : Data U} {raw : EulerPacketProfileRecursion.VectorField} (G : Forcing P D raw) (I : InitialData P D) (hSym : ∀ (x : EulerSmoothLimit.Space), -x D.support x D.support) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (hM : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.M.field t) (-x) = (D.M.field t) x) (hraw : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ), raw (t, -x, -θ) = -raw (t, x, θ)) (hinit : (EulerCylinderFieldReflection.reflection P) I.value = -I.value) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ) :
    G.vector I (t, -x, -θ) = -G.vector I (t, x, θ)
    theorem EulerTransversePacketProvider.Forcing.vectorDerivative_odd {P : } [Fact (0 < P)] {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] {D : Data U} {raw : EulerPacketProfileRecursion.VectorField} (G : Forcing P D raw) (I : InitialData P D) (hSym : ∀ (x : EulerSmoothLimit.Space), -x D.support x D.support) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (hM : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.M.field t) (-x) = (D.M.field t) x) (hraw : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ), raw (t, -x, -θ) = -raw (t, x, θ)) (hinit : (EulerCylinderFieldReflection.reflection P) I.value = -I.value) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ) :
    G.vectorDerivative I (t, -x, -θ) = -G.vectorDerivative I (t, x, θ)
    theorem EulerTransversePacketProvider.Forcing.corrector_odd_of_data {P : } [Fact (0 < P)] {U : Type u_1} [NormedAddCommGroup U] [InnerProductSpace U] [CompleteSpace U] {D : Data U} {raw : EulerPacketProfileRecursion.VectorField} (G : Forcing P D raw) (I : InitialData P D) (hSym : ∀ (x : EulerSmoothLimit.Space), -x D.support x D.support) (hF : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.F.field t) (-x) = (D.F.field t) x) (hM : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space), (D.M.field t) (-x) = (D.M.field t) x) (hraw : ∀ (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ), raw (t, -x, -θ) = -raw (t, x, θ)) (hinit : (EulerCylinderFieldReflection.reflection P) I.value = -I.value) (t : (Set.Icc 0 D.T)) (x : EulerSmoothLimit.Space) (θ : ) :
    G.corrector I (t, -x, -θ) = -G.corrector I (t, x, θ)