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.CurlFunctions 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 sectionA. 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.
@[simp]
lemma time_apply (tx : TimeAndSpace d) :
time tx = tx.1 := rfl@[simp]
lemma space_apply (tx : TimeAndSpace d) :
space tx = tx.2 := rflThe 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)
exact le_max_left _ _ All goals completed! 🐙The spatial projection is nonexpanding for the product metric.
lemma dist_space_le (tx ty : TimeAndSpace d) :
dist (space tx) (space ty) ≤ dist tx ty := by d:ℕtx:TimeAndSpace dty:TimeAndSpace d⊢ dist (space tx) (space ty) ≤ dist tx ty
rw [Prod.dist_eq d:ℕtx:TimeAndSpace dty:TimeAndSpace d⊢ dist (space tx) (space ty) ≤ max (dist tx.1 ty.1) (dist tx.2 ty.2) d:ℕtx:TimeAndSpace dty:TimeAndSpace d⊢ dist (space tx) (space ty) ≤ max (dist tx.1 ty.1) (dist tx.2 ty.2)] d:ℕtx:TimeAndSpace dty:TimeAndSpace d⊢ dist (space tx) (space ty) ≤ max (dist tx.1 ty.1) (dist tx.2 ty.2)
exact le_max_right _ _ All goals completed! 🐙A.2. Space and time derivatives in terms of curried functions
lemma fderiv_space_eq_fderiv_curry {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
(f : Time → Space d → M) (t : Time) (x dx : Space d)
(hf : Differentiable ℝ ↿f) :
fderiv ℝ (fun x' => f t x') x dx = fderiv ℝ ↿f (t, x) (0, dx) := by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ (fderiv ℝ (fun x' => f t x') x) dx = (fderiv ℝ ↿f (t, x)) (0, dx)
change fderiv ℝ (↿f ∘ fun x' => (t, x')) x dx = _ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ (fderiv ℝ (↿f ∘ fun x' => (t, x')) x) dx = (fderiv ℝ ↿f (t, x)) (0, dx)
rw [fderiv_comp, 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')) x) dx = (fderiv ℝ ↿f (t, x)) (0, dx)hg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun x' => t) x).prod (fderiv ℝ (fun x' => x') x)) dx = (fderiv ℝ ↿f (t, x)) (0, dx)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xhf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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 DifferentiableAt.fderiv_prodMk 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)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xhf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun x' => t) x).prod (fderiv ℝ (fun x' => x') x)) dx = (fderiv ℝ ↿f (t, x)) (0, dx)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xhf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun x' => t) x).prod (fderiv ℝ (fun x' => x') x)) dx = (fderiv ℝ ↿f (t, x)) (0, dx)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xhf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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
simp only [ContinuousLinearMap.coe_comp, Function.comp_apply, fderiv_fun_const, Pi.zero_apply,
fderiv_fun_id, ContinuousLinearMap.prod_apply, _root_.zero_apply,
ContinuousLinearMap.coe_id', id_eq] hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => t) xhf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun x' => x') xhg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timex:Space ddx:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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' fun_prop All goals completed! 🐙
lemma fderiv_time_eq_fderiv_curry {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
(f : Time → Space d → M) (t dt : Time) (x : Space d)
(hf : Differentiable ℝ ↿f) :
fderiv ℝ (fun t' => f t' x) t dt = fderiv ℝ ↿f (t, x) (dt, 0) := by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ (fderiv ℝ (fun t' => f t' x) t) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)
change fderiv ℝ (↿f ∘ fun t' => (t', x)) t dt = _ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ (fderiv ℝ (↿f ∘ fun t' => (t', x)) t) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)
rw [fderiv_comp, 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', x)) t) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)hg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun t' => t') t).prod (fderiv ℝ (fun t' => x) t)) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') thf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) thg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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 DifferentiableAt.fderiv_prodMk 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)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') thf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) thg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun t' => t') t).prod (fderiv ℝ (fun t' => x) t)) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') thf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) thg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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⊢ (fderiv ℝ ↿f (t, x) ∘SL (fderiv ℝ (fun t' => t') t).prod (fderiv ℝ (fun t' => x) t)) dt = (fderiv ℝ ↿f (t, x)) (dt, 0)hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') thf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) thg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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
simp only [ContinuousLinearMap.coe_comp, Function.comp_apply, fderiv_fun_id, fderiv_fun_const,
Pi.zero_apply, ContinuousLinearMap.prod_apply, ContinuousLinearMap.coe_id', id_eq,
_root_.zero_apply] hf₁ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => t') thf₂ d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ (fun t' => x) thg d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space dhf:Differentiable ℝ ↿f⊢ DifferentiableAt ℝ ↿f (t, x)hf 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' fun_prop All goals completed! 🐙A.3. Commuting time and space derivatives
Derivatives along space coordinates and time commute.
lemma fderiv_time_commute_fderiv_space {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
(f : Time → Space d → M) (t dt : Time) (x dx : Space d)
(hf : ContDiff ℝ 2 ↿f) :
fderiv ℝ (fun t' => fderiv ℝ (fun x' => f t' x') x dx) t dt
= fderiv ℝ (fun x' => fderiv ℝ (fun t' => f t' x') t dt) x dx := by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun t' => (fderiv ℝ (fun x' => f t' x') x) dx) t) dt =
(fderiv ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) x) dx
trans fderiv ℝ (fun t' => (fderiv ℝ (↿f) (t', x) (0, dx))) t dt d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun t' => (fderiv ℝ (fun x' => f t' x') x) dx) t) dt =
(fderiv ℝ (fun t' => (fderiv ℝ ↿f (t', x)) (0, dx)) t) dtd:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun t' => (fderiv ℝ ↿f (t', x)) (0, dx)) t) dt =
(fderiv ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) x) dx
· d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun t' => (fderiv ℝ (fun x' => f t' x') x) dx) t) dt =
(fderiv ℝ (fun t' => (fderiv ℝ ↿f (t', x)) (0, dx)) t) dt congr e_f d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fun t' => (fderiv ℝ (fun x' => f t' x') x) dx) = fun t' => (fderiv ℝ ↿f (t', x)) (0, dx)
funext t' e_f d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿ft':Time⊢ (fderiv ℝ (fun x' => f t' x') x) dx = (fderiv ℝ ↿f (t', x)) (0, dx)
exact fderiv_space_eq_fderiv_curry f t' x dx (hf.differentiable (by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿ft':Time⊢ 2 ≠ 0 simp All goals completed! 🐙))
trans fderiv ℝ (fun x => (fderiv ℝ (↿f) x (0, dx))) (t, x) (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 ℝ (fun t' => (fderiv ℝ ↿f (t', x)) (0, dx)) t) dt =
(fderiv ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (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 ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (dt, 0) =
(fderiv ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) x) dx
· d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun t' => (fderiv ℝ ↿f (t', x)) (0, dx)) t) dt =
(fderiv ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (dt, 0) exact fderiv_time_eq_fderiv_curry (fun t x => fderiv ℝ ↿f (t, x) (0, dx)) t dt x (by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ Differentiable ℝ ↿fun t x => (fderiv ℝ ↿f (t, x)) (0, dx) fun_prop All goals completed! 🐙)
symm d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) x) dx =
(fderiv ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (dt, 0)
trans fderiv ℝ (fun x' => (fderiv ℝ (↿f) (t, x') (dt, 0))) x dx d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) x) dx =
(fderiv ℝ (fun x' => (fderiv ℝ ↿f (t, x')) (dt, 0)) x) dxd:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun x' => (fderiv ℝ ↿f (t, x')) (dt, 0)) x) dx =
(fderiv ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (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 ℝ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) x) dx =
(fderiv ℝ (fun x' => (fderiv ℝ ↿f (t, x')) (dt, 0)) x) dx congr e_f d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fun x' => (fderiv ℝ (fun t' => f t' x') t) dt) = fun x' => (fderiv ℝ ↿f (t, x')) (dt, 0)
funext x' e_f d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿fx':Space d⊢ (fderiv ℝ (fun t' => f t' x') t) dt = (fderiv ℝ ↿f (t, x')) (dt, 0)
exact fderiv_time_eq_fderiv_curry f t dt x' (hf.differentiable (by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿fx':Space d⊢ 2 ≠ 0 simp All goals completed! 🐙))
trans fderiv ℝ (fun t => (fderiv ℝ (↿f) t (dt, 0))) (t, x) (0, dx) d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun x' => (fderiv ℝ ↿f (t, x')) (dt, 0)) x) dx =
(fderiv ℝ (fun t => (fderiv ℝ (↿f) t) (dt, 0)) (t, x)) (0, dx)d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ (fderiv ℝ (fun t => (fderiv ℝ (↿f) t) (dt, 0)) (t, x)) (0, dx) =
(fderiv ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (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 ℝ (fun x' => (fderiv ℝ ↿f (t, x')) (dt, 0)) x) dx =
(fderiv ℝ (fun t => (fderiv ℝ (↿f) t) (dt, 0)) (t, x)) (0, dx) exact fderiv_space_eq_fderiv_curry (fun t x => fderiv ℝ ↿f (t, x) (dt, 0)) t x dx (by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mt:Timedt:Timex:Space ddx:Space dhf:ContDiff ℝ 2 ↿f⊢ Differentiable ℝ ↿fun t x => (fderiv ℝ ↿f (t, x)) (dt, 0) fun_prop All goals completed! 🐙)
rw [fderiv_clm_apply, 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 ℝ (fun x => (fderiv ℝ (↿f) x) (0, dx)) (t, x)) (dt, 0)hc 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)hu 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)hc 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)hu 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)hc 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)hu 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) fderiv_clm_apply 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)hc 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)hu 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)hc 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)hu 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)hc 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)hu 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)hc 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)hu 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)hc 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)hu 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)hc 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)hu 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) simp only [fderiv_fun_const, Pi.zero_apply, ContinuousLinearMap.comp_zero, zero_add,
ContinuousLinearMap.flip_apply] 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 (by 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 simp All goals completed! 🐙)).eq (0, dx) (dt, 0)
all_goals fun_prop 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 := by 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
simp only [Time.deriv_eq, Space.deriv_eq_fderiv_basis] 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)
exact fderiv_time_commute_fderiv_space f t 1 x (Space.basis i) hf All goals completed! 🐙A.4. Differentiablity conditions
@[fun_prop]
lemma space_deriv_differentiable_time {d i} {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
{f : Time → Space d → M} (hf : ContDiff ℝ 2 ↿f) (x : Space d) :
Differentiable ℝ (fun t => Space.deriv i (f t) x) := by d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d⊢ Differentiable ℝ fun t => deriv i (f t) x
conv => d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d| Differentiable ℝ fun t => deriv i (f t) x
enter [2, t] d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dt:Time| deriv i (f t) x;
rw [Space.deriv_eq_fderiv_basis] d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dt:Time| (fderiv ℝ (f t) x) (basis i)
apply Differentiable.clm_apply hc d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d⊢ Differentiable ℝ fun y => fderiv ℝ (f y) xhu 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
· hc d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d⊢ Differentiable ℝ fun y => fderiv ℝ (f y) x have hdd : Differentiable ℝ ↿f := hf.differentiable (by d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d⊢ 2 ≠ 0 hc d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿f⊢ Differentiable ℝ fun y => fderiv ℝ (f y) x simp All goals completed! 🐙 hc d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿f⊢ Differentiable ℝ fun y => fderiv ℝ (f y) x)hc d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿f⊢ Differentiable ℝ fun y => fderiv ℝ (f y) x
have h1 (t : Time) : fderiv ℝ (fun x => f t x) x
= fderiv ℝ (↿f) (t, x) ∘L (ContinuousLinearMap.inr ℝ Time (Space d)) := by d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space d⊢ Differentiable ℝ fun t => deriv i (f t) x hc 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
ext w d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿ft:Timew:Space d⊢ (fderiv ℝ (fun x => f t x) x) w = (fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inr ℝ Time (Space d)) whc 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
simp only [ContinuousLinearMap.coe_comp, Function.comp_apply, ContinuousLinearMap.inr_apply] d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿ft:Timew:Space d⊢ (fderiv ℝ (fun x => f t x) x) w = (fderiv ℝ ↿f (t, x)) (0, w)hc 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
rw [← fderiv_space_eq_fderiv_curry f t x w hdd d:ℕi:Fin dM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿fx:Space dhdd:Differentiable ℝ ↿ft:Timew:Space d⊢ (fderiv ℝ (fun x => f t x) x) w = (fderiv ℝ (fun x' => f t x') x) whc 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]hc 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) xhc 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
conv => 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
enter [2, y] 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
change 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 ℝ (fun x => f y x) x
rw [h1] 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)
fun_prop All goals completed! 🐙
· hu 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 fun_prop All goals completed! 🐙
@[fun_prop]
lemma time_deriv_differentiable_space {d } {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
{f : Time → Space d → M} (hf : ContDiff ℝ 2 ↿f) (t : Time) :
Differentiable ℝ (fun x => Time.deriv (f · x) t) := by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun x => Time.deriv (fun x_1 => f x_1 x) t
conv => d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time| Differentiable ℝ fun x => Time.deriv (fun x_1 => f x_1 x) t
enter [2, x] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timex:Space d| Time.deriv (fun x_1 => f x_1 x) t;
rw [Time.deriv_eq] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timex:Space d| (fderiv ℝ (fun x_1 => f x_1 x) t) 1
apply Differentiable.clm_apply hc d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) thu d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun y => 1
· hc d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) t have hdd : Differentiable ℝ ↿f := hf.differentiable (by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ 2 ≠ 0 hc d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿f⊢ Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) t simp All goals completed! 🐙 hc d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿f⊢ Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) t)hc d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿f⊢ Differentiable ℝ fun y => fderiv ℝ (fun x => f x y) t
have h1 (x : Space d) : fderiv ℝ (fun t => f t x) t
= fderiv ℝ (↿f) (t, x) ∘L (ContinuousLinearMap.inl ℝ Time (Space d)) := by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun x => Time.deriv (fun x_1 => f x_1 x) t hc 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
ext w d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fx:Space dw:Time⊢ (fderiv ℝ (fun t => f t x) t) w = (fderiv ℝ ↿f (t, x) ∘SL ContinuousLinearMap.inl ℝ Time (Space d)) whc 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
simp only [ContinuousLinearMap.coe_comp, Function.comp_apply, ContinuousLinearMap.inl_apply] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fx:Space dw:Time⊢ (fderiv ℝ (fun t => f t x) t) w = (fderiv ℝ ↿f (t, x)) (w, 0)hc 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
rw [← fderiv_time_eq_fderiv_curry f t w x hdd d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Timehdd:Differentiable ℝ ↿fx:Space dw:Time⊢ (fderiv ℝ (fun t => f t x) t) w = (fderiv ℝ (fun t' => f t' x) t) whc 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]hc 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) thc 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
conv => 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
enter [2, 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
change 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
rw [h1] 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)
fun_prop All goals completed! 🐙
· hu d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:ContDiff ℝ 2 ↿ft:Time⊢ Differentiable ℝ fun y => 1 fun_prop All goals completed! 🐙
@[fun_prop]
lemma curl_differentiable_time
(fₜ : Time → Space → EuclideanSpace ℝ (Fin 3))
(hf : ContDiff ℝ 2 ↿fₜ) (x : Space) :
Differentiable ℝ (fun t => (∇ ⨯ fₜ t) x) := by fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)hf:ContDiff ℝ 2 ↿fₜx:Space⊢ Differentiable ℝ fun t => curl (fₜ t) x
rw [differentiable_euclidean 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: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:Space⊢ ∀ (i : Fin 3), Differentiable ℝ fun x_1 => (curl (fₜ x_1) x).ofLp i
intro 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
fin_cases 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) ⟨0, ⋯⟩)«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) ⟨1, ⋯⟩)«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) ⟨2, ⋯⟩) <;> «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) ⟨0, ⋯⟩)«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) ⟨1, ⋯⟩)«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) ⟨2, ⋯⟩) simp only [Fin.zero_eta, Fin.isValue, curl] «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 <;> «0» 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)) x«1» fₜ: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)) x«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 fun_prop All goals completed! 🐙A.5. Time derivative commute with curl
Curl and time derivative commute.
lemma time_deriv_curl_commute (fₜ : Time → Space → EuclideanSpace ℝ (Fin 3))
(t : Time) (x : Space) (hf : ContDiff ℝ 2 ↿fₜ) :
∂ₜ (fun t => (∇ ⨯ fₜ t) x) t = (∇ ⨯ fun x => (∂ₜ (fun t => fₜ t x) t)) x:= by fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ∂ₜ (fun t => curl (fₜ t) x) t = curl (fun x => ∂ₜ (fun t => fₜ t x) t) x
ext i fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ (∂ₜ (fun t => curl (fₜ t) x) t).ofLp i = (curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp i
rw [← Time.deriv_euclid fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp i) t = (curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp ihf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ Differentiable ℝ fun t => curl (fₜ t) x fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp i) t = (curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp ihf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ Differentiable ℝ fun t => curl (fₜ t) x] fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp i) t = (curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp ihf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ Differentiable ℝ fun t => curl (fₜ t) x
· fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp i) t = (curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp i fin_cases i «0» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp ((fun i => i) ⟨0, ⋯⟩)) t =
(curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp ((fun i => i) ⟨0, ⋯⟩)«1» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp ((fun i => i) ⟨1, ⋯⟩)) t =
(curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp ((fun i => i) ⟨1, ⋯⟩)«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ∂ₜ (fun t => (curl (fₜ t) x).ofLp ((fun i => i) ⟨2, ⋯⟩)) t =
(curl (fun x => ∂ₜ (fun t => fₜ t x) t) x).ofLp ((fun i => i) ⟨2, ⋯⟩)
all_goals
simp [curl] «2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ∂ₜ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x - deriv 1 (fun x => (fₜ t x).ofLp 0) x) t =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x
rw [Time.deriv_eq, «0» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 2) x - deriv 2 (fun x => (fₜ t x).ofLp 1) x) t) 1 =
deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 2) x - deriv 2 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x «2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t -
fderiv ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x) t)
1 =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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 fderiv_fun_sub «0» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 2) x) t -
fderiv ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 1) x) t)
1 =
deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 2) x - deriv 2 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x«0».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 2) x) t«0».hg fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 1) x) t«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t -
fderiv ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x) t)
1 =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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] «1» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 0) x) t -
fderiv ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 2) x) t)
1 =
deriv 2 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x - deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 2) x«1».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 0) x) t«1».hg fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 2) x) t«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t -
fderiv ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x) t)
1 =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fderiv ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t -
fderiv ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x) t)
1 =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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
simp [← Time.deriv_eq] «2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ∂ₜ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t - ∂ₜ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 0) x) t =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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
rw [time_deriv_comm_space_deriv, «0» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 1 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 2) t) x - ∂ₜ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 1) x) t =
deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 2) x - deriv 2 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x«0».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 2«0».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 2) x) t«0».hg fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 1) x) t «2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 0 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) x - deriv 1 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) x =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 0«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 1«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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 time_deriv_comm_space_deriv «0» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 1 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 2) t) x - deriv 2 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) x =
deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 2) x - deriv 2 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x«0».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 1«0».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 2«0».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 1 (fun x => (fₜ t x).ofLp 2) x) t«0».hg fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 1) x) t«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 0 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) x - deriv 1 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) x =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 0«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 1«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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] «1» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 2 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) x - deriv 0 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 2) t) x =
deriv 2 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x - deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 2) x«1».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 2«1».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 0«1».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 2 (fun x => (fₜ t x).ofLp 0) x) t«1».hg fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 2) x) t«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 0 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) x - deriv 1 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) x =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 0«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 1«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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«2» fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ deriv 0 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) x - deriv 1 (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) x =
deriv 0 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1) x - deriv 1 (fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0) x«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 0«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ ContDiff ℝ 2 ↿fun t x => (fₜ t x).ofLp 1«2».hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ DifferentiableAt ℝ (fun t => deriv 0 (fun x => (fₜ t x).ofLp 1) x) t«2».hg 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
congr «2».e_a.e_f fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) = fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1«2».e_a.e_f fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) = fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0 <;> «2».e_a.e_f fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 1) t) = fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 1«2».e_a.e_f fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜ⊢ (fun x' => ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t) = fun x => (∂ₜ (fun t => fₜ t x) t).ofLp 0
(funext x' «2».e_a.e_f fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ ∂ₜ (fun t' => (fₜ t' x').ofLp 0) t = (∂ₜ (fun t => fₜ t x') t).ofLp 0
rw [Time.deriv_euclid «0».e_a.e_f fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ (∂ₜ (fun t => fₜ t x') t).ofLp 2 = (∂ₜ (fun t => fₜ t x') t).ofLp 2«0».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ Differentiable ℝ fun t' => fₜ t' x' «2».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ Differentiable ℝ fun t' => fₜ t' x'] «1».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ Differentiable ℝ fun t' => fₜ t' x'«2».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ Differentiable ℝ fun t' => fₜ t' x'«2».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ Differentiable ℝ fun t' => fₜ t' x'
have h1 := hf.differentiable (by fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Space⊢ 2 ≠ 0 «2».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Spaceh1:Differentiable ℝ ↿fₜ⊢ Differentiable ℝ fun t' => fₜ t' x' simp All goals completed! 🐙«2».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Spaceh1:Differentiable ℝ ↿fₜ⊢ Differentiable ℝ fun t' => fₜ t' x')«2».e_a.e_f.hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜx':Spaceh1:Differentiable ℝ ↿fₜ⊢ Differentiable ℝ fun t' => fₜ t' x'
fun_prop All goals completed! 🐙)
repeat' fun_prop «2».hg 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
apply Differentiable.differentiableAt «2».hg 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
fun_prop All goals completed! 🐙
· hf fₜ:Time → Space → EuclideanSpace ℝ (Fin 3)t:Timex:Spacehf:ContDiff ℝ 2 ↿fₜi:Fin 3⊢ Differentiable ℝ fun t => curl (fₜ t) x fun_prop All goals completed! 🐙A.6. Constant of time deriative and space derivatives zero
lemma space_fun_of_time_deriv_eq_zero {d} {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
{f : Time → Space d → M} (hf : Differentiable ℝ ↿f)
(h : ∀ t x, ∂ₜ (f · x) t = 0) :
∃ (g : Space d → M), ∀ t x, f t x = g x := by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0⊢ ∃ g, ∀ (t : Time) (x : Space d), f t x = g x
use fun x => f 0 x h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0⊢ ∀ (t : Time) (x : Space d), f t x = (fun x => f 0 x) x
intro t x h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t:Timex:Space d⊢ f t x = (fun x => f 0 x) x
apply is_const_of_fderiv_eq_zero (f := fun t' => f t' x) (𝕜 := ℝ) h.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t:Timex:Space d⊢ Differentiable ℝ fun t' => f t' xh.hf' d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t:Timex:Space d⊢ ∀ (x_1 : Time), fderiv ℝ (fun t' => f t' x) x_1 = 0
· h.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t:Timex:Space d⊢ Differentiable ℝ fun t' => f t' x fun_prop All goals completed! 🐙
intro t h.hf' d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Time⊢ fderiv ℝ (fun t' => f t' x) t = 0
ext r h.hf' d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = 0 r
simp only [_root_.zero_apply] h.hf' d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = 0
trans r.val • (fderiv ℝ (fun t' => f t' x) t) 1 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = r.val • (fderiv ℝ (fun t' => f t' x) t) 1d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ r.val • (fderiv ℝ (fun t' => f t' x) t) 1 = 0
· d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = r.val • (fderiv ℝ (fun t' => f t' x) t) 1 rw [← map_smul d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = (fderiv ℝ (fun t' => f t' x) t) (r.val • 1) d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = (fderiv ℝ (fun t' => f t' x) t) (r.val • 1)] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ (fderiv ℝ (fun t' => f t' x) t) r = (fderiv ℝ (fun t' => f t' x) t) (r.val • 1)
congr e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ r = r.val • 1
ext e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ r.val = (r.val • 1).val
simp All goals completed! 🐙
rw [← Time.deriv_eq, d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ r.val • ∂ₜ (fun t' => f t' x) t = 0 All goals completed! 🐙 h t x, d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ r.val • 0 = 0 All goals completed! 🐙 smul_zero d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0t✝:Timex:Space dt:Timer:Time⊢ 0 = 0 All goals completed! 🐙] All goals completed! 🐙
lemma time_fun_of_space_deriv_eq_zero {d} {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
{f : Time → Space d → M} (hf : Differentiable ℝ ↿f)
(h : ∀ t x i, Space.deriv i (f t) x = 0) :
∃ (g : Time → M), ∀ t x, f t x = g t := by d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0⊢ ∃ g, ∀ (t : Time) (x : Space d), f t x = g t
use fun t => f t 0 h d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0⊢ ∀ (t : Time) (x : Space d), f t x = (fun t => f t 0) t
intro t x h d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex:Space d⊢ f t x = (fun t => f t 0) t
apply is_const_of_fderiv_eq_zero (f := fun x' => f t x') (𝕜 := ℝ) h.hf d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex:Space d⊢ Differentiable ℝ fun x' => f t x'h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex:Space d⊢ ∀ (x : Space d), fderiv ℝ (fun x' => f t x') x = 0
· h.hf d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex:Space d⊢ Differentiable ℝ fun x' => f t x' fun_prop All goals completed! 🐙
intro x h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space d⊢ fderiv ℝ (fun x' => f t x') x = 0
apply ContinuousLinearMap.coe_injective h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space d⊢ ↑(fderiv ℝ (fun x' => f t x') x) = ↑0
apply (Space.basis (d := d)).toBasis.ext h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space d⊢ ∀ (i : Fin d), ↑(fderiv ℝ (fun x' => f t x') x) (basis.toBasis i) = ↑0 (basis.toBasis i)
intro i h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space di:Fin d⊢ ↑(fderiv ℝ (fun x' => f t x') x) (basis.toBasis i) = ↑0 (basis.toBasis i)
simp only [ContinuousLinearMap.toLinearMap_zero, OrthonormalBasis.coe_toBasis,
ContinuousLinearMap.coe_coe, LinearMap.zero_apply] h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space di:Fin d⊢ (fderiv ℝ (fun x' => f t x') x) (basis i) = 0
rw [← h t x i, h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space di:Fin d⊢ (fderiv ℝ (fun x' => f t x') x) (basis i) = deriv i (f t) x All goals completed! 🐙 Space.deriv_eq_fderiv_basis h.hf' d:ℕM:Type u_1inst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0t:Timex✝:Space dx:Space di:Fin d⊢ (fderiv ℝ (fun x' => f t x') x) (basis i) = (fderiv ℝ (f t) x) (basis i) All goals completed! 🐙] All goals completed! 🐙
lemma const_of_time_deriv_space_deriv_eq_zero {d} {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
{f : Time → Space d → M} (hf : Differentiable ℝ ↿f)
(h₁ : ∀ t x, ∂ₜ (f · x) t = 0)
(h₂ : ∀ t x i, Space.deriv i (f t) x = 0) :
∃ (c : M), ∀ t x, f t x = c := by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0⊢ ∃ c, ∀ (t : Time) (x : Space d), f t x = c
obtain ⟨g, hg⟩ := space_fun_of_time_deriv_eq_zero hf h₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g x⊢ ∃ c, ∀ (t : Time) (x : Space d), f t x = c
obtain ⟨k, hk⟩ := time_fun_of_space_deriv_eq_zero hf h₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g xk:Time → Mhk:∀ (t : Time) (x : Space d), f t x = k t⊢ ∃ c, ∀ (t : Time) (x : Space d), f t x = c
use g 0 h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g xk:Time → Mhk:∀ (t : Time) (x : Space d), f t x = k t⊢ ∀ (t : Time) (x : Space d), f t x = g 0
intro t x h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g xk:Time → Mhk:∀ (t : Time) (x : Space d), f t x = k tt:Timex:Space d⊢ f t x = g 0
rw [hk t x, h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g xk:Time → Mhk:∀ (t : Time) (x : Space d), f t x = k tt:Timex:Space d⊢ k t = g 0 All goals completed! 🐙 ← hk t 0, h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g xk:Time → Mhk:∀ (t : Time) (x : Space d), f t x = k tt:Timex:Space d⊢ f t 0 = g 0 All goals completed! 🐙 hg t 0 h d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:Time → Space d → Mhf:Differentiable ℝ ↿fh₁:∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x) t = 0h₂:∀ (t : Time) (x : Space d) (i : Fin d), deriv i (f t) x = 0g:Space d → Mhg:∀ (t : Time) (x : Space d), f t x = g xk:Time → Mhk:∀ (t : Time) (x : Space d), f t x = k tt:Timex:Space d⊢ g 0 = g 0 All goals completed! 🐙] All goals completed! 🐙A.7. Equal up to a constant of time and space derivatives equal
lemma equal_up_to_const_of_deriv_eq {d} {M} [NormedAddCommGroup M] [NormedSpace ℝ M]
{f g : Time → Space d → M} (hf : Differentiable ℝ ↿f) (hg : Differentiable ℝ ↿g)
(h₁ : ∀ t x, ∂ₜ (f · x) t = ∂ₜ (g · x) t)
(h₂ : ∀ t x i, Space.deriv i (f t) x = Space.deriv i (g t) x) :
∃ (c : M), ∀ t x, f t x = g t x + c := by 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) x⊢ ∃ c, ∀ (t : Time) (x : Space d), f t x = g t x + c
suffices h : ∃ c', ∀ t x, f t x - g t x = c' by 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) xh:∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'⊢ ∃ c, ∀ (t : Time) (x : Space d), f t x = g t x + c 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'
obtain ⟨c', hc'⟩ := h 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) xc':Mhc':∀ (t : Time) (x : Space d), f t x - g t x = c'⊢ ∃ c, ∀ (t : Time) (x : Space d), f t x = g t x + c 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'
use c' h 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) xc':Mhc':∀ (t : Time) (x : Space d), f t x - g t x = c'⊢ ∀ (t : Time) (x : Space d), f t x = g t x + c' 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'
intro t x h 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) xc':Mhc':∀ (t : Time) (x : Space d), f t x - g t x = c't:Timex:Space d⊢ f t x = g t x + c' 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'
rw [← hc' t x h 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) xc':Mhc':∀ (t : Time) (x : Space d), f t x - g t x = c't:Timex:Space d⊢ f t x = g t x + (f t x - g t x) h 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) xc':Mhc':∀ (t : Time) (x : Space d), f t x - g t x = c't:Timex:Space d⊢ f t x = g t x + (f t x - 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c']h 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) xc':Mhc':∀ (t : Time) (x : Space d), f t x - g t x = c't:Timex:Space d⊢ f t x = g t x + (f t x - 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'
simp 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c' 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) x⊢ ∃ c', ∀ (t : Time) (x : Space d), f t x - g t x = c'
apply const_of_time_deriv_space_deriv_eq_zero hf 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) x⊢ Differentiable ℝ ↿fun t x => f t x - g t xh₁ 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) x⊢ ∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x - g x_1 x) t = 0h₂ 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) x⊢ ∀ (t : Time) (x : Space d) (i : Fin d), deriv i (fun x => f t x - g t x) x = 0
· hf 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) x⊢ Differentiable ℝ ↿fun t x => f t x - g t x exact Differentiable.fun_sub hf hg All goals completed! 🐙
· h₁ 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) x⊢ ∀ (t : Time) (x : Space d), ∂ₜ (fun x_1 => f x_1 x - g x_1 x) t = 0 intro t x h₁ 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 d⊢ ∂ₜ (fun x_1 => f x_1 x - g x_1 x) t = 0
rw [Time.deriv_eq, h₁ 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 d⊢ (fderiv ℝ (fun x_1 => f x_1 x - g x_1 x) t) 1 = 0 h₁ 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 d⊢ (fderiv ℝ (fun x_1 => f x_1 x) t - fderiv ℝ (fun x_1 => g x_1 x) t) 1 = 0h₁.hf 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 d⊢ DifferentiableAt ℝ (fun x_1 => f x_1 x) th₁.hg 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 d⊢ DifferentiableAt ℝ (fun x_1 => g x_1 x) t fderiv_fun_sub h₁ 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 d⊢ (fderiv ℝ (fun x_1 => f x_1 x) t - fderiv ℝ (fun x_1 => g x_1 x) t) 1 = 0h₁.hf 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 d⊢ DifferentiableAt ℝ (fun x_1 => f x_1 x) th₁.hg 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 d⊢ DifferentiableAt ℝ (fun x_1 => g x_1 x) th₁ 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 d⊢ (fderiv ℝ (fun x_1 => f x_1 x) t - fderiv ℝ (fun x_1 => g x_1 x) t) 1 = 0h₁.hf 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 d⊢ DifferentiableAt ℝ (fun x_1 => f x_1 x) th₁.hg 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 d⊢ DifferentiableAt ℝ (fun x_1 => g x_1 x) t]h₁ 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 d⊢ (fderiv ℝ (fun x_1 => f x_1 x) t - fderiv ℝ (fun x_1 => g x_1 x) t) 1 = 0h₁.hf 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 d⊢ DifferentiableAt ℝ (fun x_1 => f x_1 x) th₁.hg 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 d⊢ DifferentiableAt ℝ (fun x_1 => g x_1 x) t
simp [← Time.deriv_eq, h₁] h₁.hf 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 d⊢ DifferentiableAt ℝ (fun x_1 => f x_1 x) th₁.hg 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 d⊢ DifferentiableAt ℝ (fun x_1 => g x_1 x) t
all_goals fun_prop All goals completed! 🐙
· h₂ 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) x⊢ ∀ (t : Time) (x : Space d) (i : Fin d), deriv i (fun x => f t x - g t x) x = 0 intro t x i h₂ 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⊢ deriv i (fun x => f t x - g t x) x = 0
rw [Space.deriv_eq_fderiv_basis, h₂ 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 ℝ (fun x => f t x - g t x) x) (basis i) = 0 h₂ 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) = 0h₂.hf 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) xh₂.hg 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 ℝ (g t) x fderiv_fun_sub h₂ 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) = 0h₂.hf 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) xh₂.hg 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 ℝ (g t) xh₂ 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) = 0h₂.hf 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) xh₂.hg 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 ℝ (g t) x]h₂ 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) = 0h₂.hf 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) xh₂.hg 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 ℝ (g t) x
simp [← Space.deriv_eq_fderiv_basis, h₂] h₂.hf 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) xh₂.hg 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 ℝ (g t) x
all_goals fun_prop 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) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ (distTimeDeriv f) ε = (((fderivD ℝ) f) ε) (1, 0)
simp [distTimeDeriv] All goals completed! 🐙
lemma distTimeDeriv_apply' {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(f : (Time × Space d) →d[ℝ] M) (ε : 𝓢(Time × Space d, ℝ)) :
(distTimeDeriv f) ε =
-f (SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)
((fderivCLM ℝ (Time × Space d) ℝ) ε)) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ (distTimeDeriv f) ε = -f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) ε))
rw [distTimeDeriv_apply, M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mf:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ (((fderivD ℝ) f) ε) (1, 0) = -f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) All goals completed! 🐙 fderivD_apply 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) ℝ) ε)) =
-f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) 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) ε := by 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) ε
simp [distTimeDeriv_apply'] 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) := by 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
ext ε 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) ε
simp [distTimeDeriv_apply, fderivD_apply] 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) := by 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)
simp [distSpaceDeriv] All goals completed! 🐙
lemma distSpaceDeriv_apply' {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(i : Fin d) (f : (Time × Space d) →d[ℝ] M) (ε : 𝓢(Time × Space d, ℝ)) :
(distSpaceDeriv i f) ε =
- f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i))
((fderivCLM ℝ (Time × Space d) ℝ) ε)) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ ((distSpaceDeriv i) f) ε =
-f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) ε))
rw [distSpaceDeriv_apply, M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mε:𝓢(Time × Space d, ℝ)⊢ (((fderivD ℝ) f) ε) (0, basis i) =
-f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) All goals completed! 🐙 fderivD_apply 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) ℝ) ε)) =
-f ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) ε)) 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) ε := by 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) ε
simp [distSpaceDeriv_apply'] All goals completed! 🐙B.2.1. Space derivatives commute
lemma distSpaceDeriv_commute {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(i j : Fin d) (f : (Time × Space d) →d[ℝ] M) :
distSpaceDeriv i (distSpaceDeriv j f) = distSpaceDeriv j (distSpaceDeriv i f) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] M⊢ (distSpaceDeriv i) ((distSpaceDeriv j) f) = (distSpaceDeriv j) ((distSpaceDeriv i) f)
ext κ M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)⊢ ((distSpaceDeriv i) ((distSpaceDeriv j) f)) κ = ((distSpaceDeriv j) ((distSpaceDeriv i) f)) κ
simp only [distSpaceDeriv_apply, fderivD_apply, neg_neg] M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)⊢ f
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis j))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) κ)))) =
f
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis j)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))))
congr 1 e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)⊢ (SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis j))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))) =
(SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis j)) ((fderivCLM ℝ (Time × Space d) ℝ) κ)))
ext x e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space d⊢ ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis j))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))))
x =
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis j)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))))
x
change fderiv ℝ (fun x => fderiv ℝ κ x (0, basis i)) x (0, basis j) =
fderiv ℝ (fun x => fderiv ℝ κ x (0, basis j)) x (0, basis i) e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin dj:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space d⊢ (fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis i)) x) (0, basis j) =
(fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis j)) x) (0, basis i)
have h1 := smooth κ 2 e_6 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 ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis i)) x) (0, basis j) =
(fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis j)) x) (0, basis i)
rw [fderiv_clm_apply, e_6 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 ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis j)) x) (0, basis i)e_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis i)) x e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis j)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis i)) x fderiv_clm_apply e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis j)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis i)) x e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis j)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis i)) x]e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis j)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu 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 ℝ (fun x => (0, basis i)) x
· e_6 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) simp only [fderiv_fun_const, Pi.zero_apply, ContinuousLinearMap.comp_zero, zero_add,
ContinuousLinearMap.flip_apply] e_6 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 (by 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 simp All goals completed! 🐙)).eq (0, basis j) (0, basis i)
all_goals fun_prop 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) := by 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
ext ε 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) ε
simp [distSpaceDeriv_apply, fderivD_apply] All goals completed! 🐙B.3. Time and space derivatives commute
lemma distTimeDeriv_commute_distSpaceDeriv {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(i : Fin d) (f : (Time × Space d) →d[ℝ] M) :
distTimeDeriv (distSpaceDeriv i f) = distSpaceDeriv i (distTimeDeriv f) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] M⊢ distTimeDeriv ((distSpaceDeriv i) f) = (distSpaceDeriv i) (distTimeDeriv f)
ext κ M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)⊢ (distTimeDeriv ((distSpaceDeriv i) f)) κ = ((distSpaceDeriv i) (distTimeDeriv f)) κ
simp only [distTimeDeriv_apply, distSpaceDeriv_apply, fderivD_apply, neg_neg] 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) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) κ)))) =
f
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))))
congr 1 e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)⊢ (SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))) =
(SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) κ)))
ext x e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space d⊢ ((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))))
x =
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (1, 0))
((fderivCLM ℝ (Time × Space d) ℝ)
((SchwartzMap.evalCLM ℝ (Time × Space d) ℝ (0, basis i)) ((fderivCLM ℝ (Time × Space d) ℝ) κ))))
x
change fderiv ℝ (fun x => fderiv ℝ κ x (1, 0)) x (0, basis i) =
fderiv ℝ (fun x => fderiv ℝ κ x (0, basis i)) x (1, 0) e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space d⊢ (fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (1, 0)) x) (0, basis i) =
(fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis i)) x) (1, 0)
have h1 := smooth κ 2 e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mi:Fin df:(Time × Space d)→d[ℝ] Mκ:𝓢(Time × Space d, ℝ)x:Time × Space dh1:ContDiff ℝ ↑2 ⇑κ⊢ (fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (1, 0)) x) (0, basis i) =
(fderiv ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis i)) x) (1, 0)
rw [fderiv_clm_apply, e_6 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 ℝ (fun x => (fderiv ℝ (⇑κ) x) (0, basis i)) x) (1, 0)e_6.hc 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 ℝ ⇑κ) xe_6.hu M: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 e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu M: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)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu M: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 fderiv_clm_apply e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu M: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)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu M: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 e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu M: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)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu M: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]e_6 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)e_6.hc 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 ℝ ⇑κ) xe_6.hu M: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)) xe_6.hc 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 ℝ ⇑κ) xe_6.hu M: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
· e_6 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) simp only [fderiv_fun_const, Pi.zero_apply, ContinuousLinearMap.comp_zero, zero_add,
ContinuousLinearMap.flip_apply] e_6 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 (by 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 simp All goals completed! 🐙)).eq (0, basis i) (1, 0)
all_goals fun_prop 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 ε := by d:ℕf:(Time × Space d)→d[ℝ] ℝε:𝓢(Time × Space d, ℝ)⊢ ((distSpaceGrad f) ε).ofLp = fun i => ((distSpaceDeriv i) f) ε
rfl 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 := by d:ℕf:(Time × Space d)→d[ℝ] EuclideanSpace ℝ (Fin d)η:𝓢(Time × Space d, ℝ)⊢ (distSpaceDiv f) η = ∑ i, (((distSpaceDeriv i) f) η).ofLp i rfl All goals completed! 🐙