Imports
/- Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Zhi Kai Pong, Joseph Tooby-Smith, Rob Sneiderman -/ module public import Physlib.SpaceAndTime.Space.Derivatives.Curl

Functions and distributions on Time and Space d

i. Overview

In this module we define TimeAndSpace d as the product of Time and Space d, and prove basic lemmas about derivatives of functions and distributions on both coordinates.

The derivative and distribution results are in the namespace Space by convention.

ii. Key results

    TimeAndSpace d : Euclidean spacetime as the product of time and space.

    TimeAndSpace.time : The projection from TimeAndSpace d to Time.

    TimeAndSpace.space : The projection from TimeAndSpace d to Space d.

    distTimeDeriv : The derivative of a distribution on Time × Space d along the temporal coordinate.

    distSpaceDeriv : The derivative of a distribution on Time × Space d along the spatial i coordinate.

    distSpaceGrad : The spatial gradient of a distribution on Time × Space d.

    distSpaceDiv : The spatial divergence of a distribution on Time × Space d.

    distSpaceCurl : The spatial curl of a distribution on Time × Space 3.

iii. Table of contents

    A. The coordinate product and derivatives involving time and space

      A.1. The TimeAndSpace coordinate product

      A.2. Space and time derivatives in terms of curried functions

      A.3. Commuting time and space derivatives

      A.4. Differentiablity conditions

      A.5. Time derivative commute with curl

      A.6. Constant of time deriative and space derivatives zero

      A.7. Equal up to a constant of time and space derivatives equal

    B. Derivatives of distributions on Time × Space d

      B.1. Time derivatives

        B.1.1. Composition with a CLM

      B.2. Space derivatives

        B.2.1. Space derivatives commute

        B.2.2. Composition with a CLM

      B.3. Time and space derivatives commute

      B.4. The spatial gradient

      B.5. The spatial divergence

      B.6. The spatial curl

iv. References

@[expose] public section

A. The coordinate product and derivatives involving time and space

A.1. The TimeAndSpace coordinate product

Euclidean spacetime as the product of time and d-dimensional space.

abbrev TimeAndSpace (d : ℕ := 3) := Time × Space d
@[simp] lemma time_apply (tx : TimeAndSpace d) : time tx = tx.1 := rfl@[simp] lemma space_apply (tx : TimeAndSpace d) : space tx = tx.2 := rfl

The time projection is nonexpanding for the product metric.

d:ℕtx:TimeAndSpace dty:TimeAndSpace d⊢ dist (time tx) (time ty) ≤ max (dist tx.1 ty.1) (dist tx.2 ty.2) All goals completed! 🐙

The spatial projection is nonexpanding for the product metric.

d:ℕtx:TimeAndSpace dty:TimeAndSpace d⊢ dist (space tx) (space ty) ≤ max (dist tx.1 ty.1) (dist tx.2 ty.2) All goals completed! 🐙

A.2. Space and time derivatives in terms of curried functions

d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun x' => t) x).prod (fderiv ℝ (fun x' => x') x)) dx = (fderiv ℝ ↿f (t, x)) (0, dx)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xd:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xd:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => (t, x')) x d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xd:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xd:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => (t, x')) x repeat' All goals completed! 🐙d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun t' => t') t).prod (fderiv ℝ (fun t' => x) t)) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') td:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) td:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => (t', x)) t d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') td:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) td:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => (t', x)) t repeat' All goals completed! 🐙

A.3. Commuting time and space derivatives

Derivatives along space coordinates and time commute.

d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ ↿f (t, x) ∘SL fderiv ℝ (fun t => (dt, 0)) (t, x) + (fderiv ℝ (fderiv ℝ ↿f) (t, x)).flip (dt, 0)) (0, dx) = (fderiv ℝ ↿f (t, x) ∘SL fderiv ℝ (fun x => (0, dx)) (t, x) + (fderiv ℝ (fderiv ℝ ↿f) (t, x)).flip (0, dx)) (dt, 0)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ DifferentiableAt ℝ (fderiv ℝ ↿f) (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ DifferentiableAt ℝ (fun x => (0, dx)) (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ DifferentiableAt ℝ (fderiv ℝ ↿f) (t, x)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ DifferentiableAt ℝ (fun t => (dt, 0)) (t, x) d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ ↿f (t, x) ∘SL fderiv ℝ (fun t => (dt, 0)) (t, x) + (fderiv ℝ (fderiv ℝ ↿f) (t, x)).flip (dt, 0)) (0, dx) = (fderiv ℝ ↿f (t, x) ∘SL fderiv ℝ (fun x => (0, dx)) (t, x) + (fderiv ℝ (fderiv ℝ ↿f) (t, x)).flip (0, dx)) (dt, 0) d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ ((fderiv ℝ (fderiv ℝ ↿f) (t, x)) (0, dx)) (dt, 0) = ((fderiv ℝ (fderiv ℝ ↿f) (t, x)) (dt, 0)) (0, dx) exact (hf.contDiffAt.isSymmSndFDerivAt (d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ minSmoothness ℝ 2 ≤ 2 All goals completed! 🐙)).eq (0, dx) (dt, 0) all_goals All goals completed! 🐙
lemma time_deriv_comm_space_deriv {d i} {M} [NormedAddCommGroup M] [NormedSpace ℝ M] {f : Time → Space d → M} (hf : ContDiff ℝ 2 ↿f) (t : Time) (x : Space d) : Time.deriv (fun t' => Space.deriv i (f t') x) t = Space.deriv i (fun x' => Time.deriv (fun t' => f t' x') t) x := d:ℕi:Fin dM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timex:Space d⊢ Time.deriv (fun t' => deriv i (f t') x) t = deriv i (fun x' => Time.deriv (fun t' => f t' x') t) x d:ℕi:Fin dM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timex:Space d⊢ (fderiv ℝ (fun t' => (fderiv ℝ (f t') x) (basis i)) t) 1 = (fderiv ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) 1) x) (basis i) All goals completed! 🐙

A.4. Differentiablity conditions

d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿fh1:∀ (t : Time), fderiv ℝ (fun x => f t x) x = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d)⊢ Differentiable ℝ fun y => fderiv ℝ (f y) x d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿fh1:∀ (t : Time), fderiv ℝ (fun x => f t x) x = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d)| Differentiable ℝ fun y => fderiv ℝ (f y) x d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿fh1:∀ (t : Time), fderiv ℝ (fun x => f t x) x = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d)y:Time| fderiv ℝ (f y) x d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿fh1:∀ (t : Time), fderiv ℝ (fun x => f t x) x = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d)y:Time| fderiv ℝ (fun x => f y x) x d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿fh1:∀ (t : Time), fderiv ℝ (fun x => f t x) x = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d)y:Time| fderiv ℝ ↿f (y, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d) All goals completed! 🐙 d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d⊢ Differentiable ℝ fun y => basis i All goals completed! 🐙d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fh1:∀ (x : Space d), fderiv ℝ (fun t => f t x) t = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inl ℝ Time (Space d)⊢ Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) t d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fh1:∀ (x : Space d), fderiv ℝ (fun t => f t x) t = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inl ℝ Time (Space d)| Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) t d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fh1:∀ (x : Space d), fderiv ℝ (fun t => f t x) t = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inl ℝ Time (Space d)t':Space d| fderiv ℝ (fun x => f x t') t d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fh1:∀ (x : Space d), fderiv ℝ (fun t => f t x) t = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inl ℝ Time (Space d)t':Space d| fderiv ℝ (fun x => f x t') t d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fh1:∀ (x : Space d), fderiv ℝ (fun t => f t x) t = fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inl ℝ Time (Space d)t':Space d| fderiv ℝ ↿f (t, t') ∘SL ContinuousLinearMap.inl ℝ Time (Space d) All goals completed! 🐙 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun y => 1 All goals completed! 🐙fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ ∀ (i : Fin 3), Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp i fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Spacei:Fin 3⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp i fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp ((fun i => i) ⟨0, ⋯⟩)fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp ((fun i => i) ⟨1, ⋯⟩)fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp ((fun i => i) ⟨2, ⋯⟩) fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp ((fun i => i) ⟨0, ⋯⟩)fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp ((fun i => i) ⟨1, ⋯⟩)fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp ((fun i => i) ⟨2, ⋯⟩) fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => deriv (⟨2, ⋯⟩ + 1) (fun x => (fₜ x_1 x).ofLp (⟨2, ⋯⟩ + 2)) x - deriv (⟨2, ⋯⟩ + 2) (fun x => (fₜ x_1 x).ofLp (⟨2, ⋯⟩ + 1)) x fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => deriv (0 + 1) (fun x => (fₜ x_1 x).ofLp (0 + 2)) x - deriv (0 + 2) (fun x => (fₜ x_1 x).ofLp (0 + 1)) xfₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => deriv (⟨1, ⋯⟩ + 1) (fun x => (fₜ x_1 x).ofLp (⟨1, ⋯⟩ + 2)) x - deriv (⟨1, ⋯⟩ + 2) (fun x => (fₜ x_1 x).ofLp (⟨1, ⋯⟩ + 1)) xfₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun x_1 => deriv (⟨2, ⋯⟩ + 1) (fun x => (fₜ x_1 x).ofLp (⟨2, ⋯⟩ + 2)) x - deriv (⟨2, ⋯⟩ + 2) (fun x => (fₜ x_1 x).ofLp (⟨2, ⋯⟩ + 1)) x All goals completed! 🐙

A.5. Time derivative commute with curl

Curl and time derivative commute.

fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Spaceh1:Differentiable ℝ ↿fₜ⊢ Differentiable ℝ fun t' => fₜ t' x' All goals completed! 🐙) repeat' fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x) t all_goals fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ Differentiable ℝ fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x All goals completed! 🐙 fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ Differentiable ℝ fun t => curl (fₜ t) x All goals completed! 🐙

A.6. Constant of time deriative and space derivatives zero

All goals completed! 🐙All goals completed! 🐙All goals completed! 🐙

A.7. Equal up to a constant of time and space derivatives equal

d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mg:Time → Space d → Mhf:Differentiable ℝ ↿fhg:Differentiable ℝ ↿gh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = ∂ₜ (fun x_1 => g x_1 x) th₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = deriv i (g t) xt:Timex:Space di:Fin d⊢ (fderiv ℝ (f t) x - fderiv ℝ (g t) x) (basis i) = 0d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mg:Time → Space d → Mhf:Differentiable ℝ ↿fhg:Differentiable ℝ ↿gh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = ∂ₜ (fun x_1 => g x_1 x) th₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = deriv i (g t) xt:Timex:Space di:Fin d⊢ DifferentiableAt ℝ (f t) xd:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mg:Time → Space d → Mhf:Differentiable ℝ ↿fhg:Differentiable ℝ ↿gh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = ∂ₜ (fun x_1 => g x_1 x) th₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = deriv i (g t) xt:Timex:Space di:Fin d⊢ DifferentiableAt ℝ (g t) x d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mg:Time → Space d → Mhf:Differentiable ℝ ↿fhg:Differentiable ℝ ↿gh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = ∂ₜ (fun x_1 => g x_1 x) th₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = deriv i (g t) xt:Timex:Space di:Fin d⊢ DifferentiableAt ℝ (f t) xd:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mg:Time → Space d → Mhf:Differentiable ℝ ↿fhg:Differentiable ℝ ↿gh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = ∂ₜ (fun x_1 => g x_1 x) th₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = deriv i (g t) xt:Timex:Space di:Fin d⊢ DifferentiableAt ℝ (g t) x all_goals All goals completed! 🐙

B. Derivatives of distributions on Time × Space d

B.1. Time derivatives

lemma distTimeDeriv_apply {M d} [NormedAddCommGroup M] [NormedSpace ℝ M] (f : (Time × Space d) →d[ℝ] M) (ε : 𝓢(Time × Space d, ℝ)) : (distTimeDeriv f) ε = fderivD ℝ f ε (1, 0) := M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ (distTimeDeriv f) ε = (((fderivD ℝ) f) ε) (1, 0) All goals completed! 🐙All goals completed! 🐙lemma apply_fderiv_eq_distTimeDeriv {M d} [NormedAddCommGroup M] [NormedSpace ℝ M] (f : (Time × Space d) →d[ℝ] M) (ε : 𝓢(Time × Space d, ℝ)) : f (SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) = - (distTimeDeriv f) ε := M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) = -(distTimeDeriv f) ε All goals completed! 🐙
B.1.1. Composition with a CLM
lemma distTimeDeriv_apply_CLM {M M2 d} [NormedAddCommGroup M] [NormedSpace ℝ M] [NormedAddCommGroup M2] [NormedSpace ℝ M2] (f : (Time × Space d) →d[ℝ] M) (c : M →L[ℝ] M2) : distTimeDeriv (c ∘L f) = c ∘L (distTimeDeriv f) := M:TypeM2:Typed:ℕinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:NormedAddCommGroup M2inst✝:NormedSpace ℝ M2f:(Time × Space d)→d[ℝ] Mc:M →L[ℝ] M2⊢ distTimeDeriv (c ∘SL f) = c ∘SL distTimeDeriv f M:TypeM2:Typed:ℕinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:NormedAddCommGroup M2inst✝:NormedSpace ℝ M2f:(Time × Space d)→d[ℝ] Mc:M →L[ℝ] M2ε:𝓢(Time × Space d, ℝ)⊢ (distTimeDeriv (c ∘SL f)) ε = (c ∘SL distTimeDeriv f) ε All goals completed! 🐙

B.2. Space derivatives

lemma distSpaceDeriv_apply {M d} [NormedAddCommGroup M] [NormedSpace ℝ M] (i : Fin d) (f : (Time × Space d) →d[ℝ] M) (ε : 𝓢(Time × Space d, ℝ)) : (distSpaceDeriv i f) ε = fderivD ℝ f ε (0, basis i) := M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ ((distSpaceDeriv i) f) ε = (((fderivD ℝ) f) ε) (0, basis i) All goals completed! 🐙All goals completed! 🐙lemma apply_fderiv_eq_distSpaceDeriv {M d} [NormedAddCommGroup M] [NormedSpace ℝ M] (i : Fin d) (f : (Time × Space d) →d[ℝ] M) (ε : 𝓢(Time × Space d, ℝ)) : f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) = - (distSpaceDeriv i f) ε := M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) = -((distSpaceDeriv i) f) ε All goals completed! 🐙
B.2.1. Space derivatives commute
M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (0, basis i)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (0, basis i)) (0, basis j) = (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (0, basis j)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (0, basis j)) (0, basis i)M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fderiv ℝ ⇑κ) xM:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fun x => (0, basis j)) xM:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fderiv ℝ ⇑κ) xM:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fun x => (0, basis i)) x M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (0, basis i)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (0, basis i)) (0, basis j) = (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (0, basis j)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (0, basis j)) (0, basis i) M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ ((fderiv ℝ (fderiv ℝ ⇑κ) x) (0, basis j)) (0, basis i) = ((fderiv ℝ (fderiv ℝ ⇑κ) x) (0, basis i)) (0, basis j) exact (h1.contDiffAt.isSymmSndFDerivAt (M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ minSmoothness ℝ 2 ≤ ↑2 All goals completed! 🐙)).eq (0, basis j) (0, basis i) all_goals All goals completed! 🐙
B.2.2. Composition with a CLM
lemma distSpaceDeriv_apply_CLM {M M2 d} [NormedAddCommGroup M] [NormedSpace ℝ M] [NormedAddCommGroup M2] [NormedSpace ℝ M2] (i : Fin d) (f : (Time × Space d) →d[ℝ] M) (c : M →L[ℝ] M2) : distSpaceDeriv i (c ∘L f) = c ∘L (distSpaceDeriv i f) := M:TypeM2:Typed:ℕinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:NormedAddCommGroup M2inst✝:NormedSpace ℝ M2i:Fin df:(Time × Space d)→d[ℝ] Mc:M →L[ℝ] M2⊢ (distSpaceDeriv i) (c ∘SL f) = c ∘SL (distSpaceDeriv i) f M:TypeM2:Typed:ℕinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:NormedAddCommGroup M2inst✝:NormedSpace ℝ M2i:Fin df:(Time × Space d)→d[ℝ] Mc:M →L[ℝ] M2ε:𝓢(Time × Space d, ℝ)⊢ ((distSpaceDeriv i) (c ∘SL f)) ε = (c ∘SL (distSpaceDeriv i) f) ε All goals completed! 🐙

B.3. Time and space derivatives commute

M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (1, 0)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (1, 0)) (0, basis i) = (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (0, basis i)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (0, basis i)) (1, 0)M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fderiv ℝ ⇑κ) xM:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fun x => (0, basis i)) xM:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fderiv ℝ ⇑κ) xM:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ DifferentiableAt ℝ (fun x => (1, 0)) x M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (1, 0)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (1, 0)) (0, basis i) = (fderiv ℝ (⇑κ) x ∘SL fderiv ℝ (fun x => (0, basis i)) x + (fderiv ℝ (fderiv ℝ ⇑κ) x).flip (0, basis i)) (1, 0) M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ ((fderiv ℝ (fderiv ℝ ⇑κ) x) (0, basis i)) (1, 0) = ((fderiv ℝ (fderiv ℝ ⇑κ) x) (1, 0)) (0, basis i) exact (h1.contDiffAt.isSymmSndFDerivAt (M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ minSmoothness ℝ 2 ≤ ↑2 All goals completed! 🐙)).eq (0, basis i) (1, 0) all_goals All goals completed! 🐙

B.4. The spatial gradient

lemma distSpaceGrad_apply {d} (f : (Time × Space d) →d[ℝ] ℝ) (ε : 𝓢(Time × Space d, ℝ)) : distSpaceGrad f ε = fun i => distSpaceDeriv i f ε := d:ℕf:(Time × Space d)→d[ℝ] ℝε:𝓢(Time × Space d, ℝ)⊢ ((distSpaceGrad f) ε).ofLp = fun i => ((distSpaceDeriv i) f) ε All goals completed! 🐙

B.5. The spatial divergence

lemma distSpaceDiv_apply_eq_sum_distSpaceDeriv {d} (f : (Time × Space d) →d[ℝ] EuclideanSpace ℝ (Fin d)) (η : 𝓢(Time ×Space d, ℝ)) : distSpaceDiv f η = ∑ i, distSpaceDeriv i f η i := d:ℕf:(Time × Space d)→d[ℝ] EuclideanSpace ℝ (Fin d)η:𝓢(Time × Space d, ℝ)⊢ (distSpaceDiv f) η = ∑ i, (((distSpaceDeriv i) f) η).ofLp i All goals completed! 🐙

B.6. The spatial curl