Torus Type Definitions and Differential Operators #
Defines the 3-torus T^3 = (R/Z)^3, the projection torusMk, the periodic lift,
and differential operators (torusGradX, torusDivX, torusCurlX) via the
periodic lift. The FlatTorus3 instance is assembled in TorusInstance.lean.
Spatial gradient on T³. For f : T³ → ℝ, we lift to ℝ³, compute fderiv, and read off components. This is well-defined by periodicLift_fderiv_eq.
Equations
- torusGradX f x = fun (i : Fin 3) => (fderiv ℝ (periodicLift f) ⋯.choose) (Pi.single i 1)
Instances For
The periodic lift of the gradient component equals the fderiv of the lift.
This resolves the choose ambiguity: at each point, the gradient uses a
chosen preimage, but by periodicLift_fderiv_eq, the fderiv is the same
for any preimage of the same torus point.
fderiv(c * g) = c • fderiv(g) unconditionally. When g is differentiable: by fderiv_const_smul. When g is not differentiable and c ≠ 0: c * g is also not differentiable, so both sides are the zero map. When c = 0: both sides are 0.
fderiv(exp ∘ g) x = exp(g x) • fderiv g x unconditionally. When g is differentiable: by fderiv_exp. When g is not differentiable: exp ∘ g is also not differentiable (since g = log ∘ exp ∘ g and log is smooth on (0,∞)), so both sides are 0.
hGradAdd: gradient additivity for C¹ functions.
hSpatialVelocityFubini: swap spatial and velocity integrals. Uses SigmaFinite (from CompactSpace + IsFiniteMeasure).
torusMk is an open quotient map (product of open quotient maps).
torusGradX is continuous (uses quotient map property).