Imports
/-
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
module
public import Physlib.SpaceAndTime.SpaceTime.LorentzAction
public import Physlib.Relativity.Tensors.RealTensor.CoVector.Tensorial
public import Mathlib.Analysis.InnerProductSpace.TensorProduct
public import Physlib.SpaceAndTime.Space.Derivatives.Basic
public import Physlib.SpaceAndTime.Time.DerivativesDerivatives on SpaceTime
i. Overview
In this module we define and prove basic lemmas about derivatives of functions and
distributions on SpaceTime d.
ii. Key results
deriv : The derivative of a function SpaceTime d → M along the μ coordinate.
manifoldDeriv : The derivative of a function from SpaceTime d to a manifold along
the μ coordinate.
contDiff_deriv : If f is C^{n+1} then ∂_ μ f is C^n.
differentiable_deriv : If f is C^2 then ∂_ μ f is differentiable.
deriv_commute : Derivatives on SpaceTime d commute (Clairaut's theorem).
deriv_sum_inr : The derivative along a spatial coordinate in terms of the
derivative on Space d.
deriv_sum_inl : The derivative along the temporal coordinate in terms of the
derivative on Time.
distDeriv : The derivative of a distribution on SpaceTime d along the μ coordinate.
distDeriv_commute : Derivatives of distributions on SpaceTime d commute.
iii. Table of contents
A. Derivatives of functions on SpaceTime d
A.1. The definition of the derivative
A.2. Basic equality lemmas
A.3. Derivative of the zero function
A.4. Smoothness and differentiability of the derivative
A.5. Derivatives commute
A.6. The derivative of a function composed with a Lorentz transformation
A.7. Spacetime derivatives in terms of time and space derivatives
B. Derivatives of distributions
B.1. Commutation of derivatives of distributions
B.2. Lorentz group action on derivatives of distributions
C. Derivatives of tensors
C.1. Derivatives of tensors for distributions
iv. References
@[expose] public section
A. Derivatives of functions on SpaceTime d
A.1. The definition of the derivative
@[inherit_doc deriv]
scoped notation "∂_" => derivlemma deriv_eq {M : Type} [AddCommGroup M] [Module ℝ M] [TopologicalSpace M]
{d : ℕ} (μ : Fin 1 ⊕ Fin d) (f : SpaceTime d → M) (y : SpaceTime d) :
∂_ μ f y =
fderiv ℝ f y (Lorentz.Vector.basis μ) := M:Typeinst✝²:AddCommGroup Minst✝¹:Module ℝ Minst✝:TopologicalSpace Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → My:SpaceTime d⊢ ∂_ μ f y = (fderiv ℝ f y) (Lorentz.Vector.basis μ)
All goals completed! 🐙lemma manifoldDeriv_eq {E H N : Type} [NormedAddCommGroup E] [NormedSpace ℝ E]
[TopologicalSpace H] (I : ModelWithCorners ℝ E H) [TopologicalSpace N]
[ChartedSpace H N] {d : ℕ} (μ : Fin 1 ⊕ Fin d) (f : SpaceTime d → N)
(y : SpaceTime d) :
manifoldDeriv I μ f y =
mfderiv 𝓘(ℝ, SpaceTime d) I f y
((Lorentz.Vector.basis μ : SpaceTime d) : TangentSpace 𝓘(ℝ, SpaceTime d) y) := rflThe spacetime derivative is the manifold derivative for functions into normed spaces.
M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → My:SpaceTime d⊢ (mfderiv% f y) (Lorentz.Vector.basis μ) = (mfderiv% f y) (Lorentz.Vector.basis μ)
rfl All goals completed! 🐙
lemma deriv_eq_manifoldDeriv {M : Type} [NormedAddCommGroup M] [NormedSpace ℝ M]
{d : ℕ} (μ : Fin 1 ⊕ Fin d) (f : SpaceTime d → M) (y : SpaceTime d) :
deriv μ f y = manifoldDeriv 𝓘(ℝ, M) μ f y := by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → My:SpaceTime d⊢ ∂_ μ f y = manifoldDeriv 𝓘(ℝ, M) μ f y
rw [deriv_eq_mfderiv, M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → My:SpaceTime d⊢ (mfderiv% f y) (Lorentz.Vector.basis μ) = manifoldDeriv 𝓘(ℝ, M) μ f y All goals completed! 🐙 manifoldDeriv_eq M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → My:SpaceTime d⊢ (mfderiv% f y) (Lorentz.Vector.basis μ) = (mfderiv% f y) (Lorentz.Vector.basis μ) All goals completed! 🐙] All goals completed! 🐙@[simp]
lemma manifoldDeriv_const {E H N : Type} [NormedAddCommGroup E] [NormedSpace ℝ E]
[TopologicalSpace H] (I : ModelWithCorners ℝ E H) [TopologicalSpace N]
[ChartedSpace H N] {d : ℕ} (μ : Fin 1 ⊕ Fin d) (n : N) (y : SpaceTime d) :
manifoldDeriv I μ (fun _ : SpaceTime d => n) y = 0 := by E:TypeH:TypeN:Typeinst✝⁴:NormedAddCommGroup Einst✝³:NormedSpace ℝ Einst✝²:TopologicalSpace HI:ModelWithCorners ℝ E Hinst✝¹:TopologicalSpace Ninst✝:ChartedSpace H Nd:ℕμ:Fin 1 ⊕ Fin dn:Ny:SpaceTime d⊢ manifoldDeriv I μ (fun x => n) y = 0
simp [manifoldDeriv] All goals completed! 🐙A.2. Basic equality lemmas
lemma differentiable_vector {d : ℕ} (f : SpaceTime d → Lorentz.Vector d) :
(∀ ν, Differentiable ℝ (fun x => f x ν)) ↔ Differentiable ℝ f := by d:ℕf:SpaceTime d → Lorentz.Vector d⊢ (∀ (ν : Fin 1 ⊕ Fin d), Differentiable ℝ fun x => f x ν) ↔ Differentiable ℝ f
refine ⟨fun h => ?_, fun h ν => ?_⟩ refine_1 d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), Differentiable ℝ fun x => f x ν⊢ Differentiable ℝ frefine_2 d:ℕf:SpaceTime d → Lorentz.Vector dh:Differentiable ℝ fν:Fin 1 ⊕ Fin d⊢ Differentiable ℝ fun x => f x ν
· refine_1 d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), Differentiable ℝ fun x => f x ν⊢ Differentiable ℝ f rw [← (Lorentz.Vector.equivPi d).comp_differentiable_iff refine_1 d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), Differentiable ℝ fun x => f x ν⊢ Differentiable ℝ (⇑(Lorentz.Vector.equivPi d) ∘ f) refine_1 d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), Differentiable ℝ fun x => f x ν⊢ Differentiable ℝ (⇑(Lorentz.Vector.equivPi d) ∘ f)] refine_1 d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), Differentiable ℝ fun x => f x ν⊢ Differentiable ℝ (⇑(Lorentz.Vector.equivPi d) ∘ f)
exact differentiable_pi'' h All goals completed! 🐙
· refine_2 d:ℕf:SpaceTime d → Lorentz.Vector dh:Differentiable ℝ fν:Fin 1 ⊕ Fin d⊢ Differentiable ℝ fun x => f x ν exact (Lorentz.Vector.coordCLM ν).differentiable.comp h All goals completed! 🐙
lemma contDiff_vector {d : ℕ} (f : SpaceTime d → Lorentz.Vector d) :
(∀ ν, ContDiff ℝ n (fun x => f x ν)) ↔ ContDiff ℝ n f := by n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector d⊢ (∀ (ν : Fin 1 ⊕ Fin d), ContDiff ℝ n fun x => f x ν) ↔ ContDiff ℝ n f
refine ⟨fun h => ?_, fun h ν => ?_⟩ refine_1 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), ContDiff ℝ n fun x => f x ν⊢ ContDiff ℝ n frefine_2 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:ContDiff ℝ n fν:Fin 1 ⊕ Fin d⊢ ContDiff ℝ n fun x => f x ν
· refine_1 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), ContDiff ℝ n fun x => f x ν⊢ ContDiff ℝ n f rw [← (Lorentz.Vector.equivPi d).comp_contDiff_iff refine_1 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), ContDiff ℝ n fun x => f x ν⊢ ContDiff ℝ n (⇑(Lorentz.Vector.equivPi d) ∘ f) refine_1 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), ContDiff ℝ n fun x => f x ν⊢ ContDiff ℝ n (⇑(Lorentz.Vector.equivPi d) ∘ f)] refine_1 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:∀ (ν : Fin 1 ⊕ Fin d), ContDiff ℝ n fun x => f x ν⊢ ContDiff ℝ n (⇑(Lorentz.Vector.equivPi d) ∘ f)
exact contDiff_pi' h All goals completed! 🐙
· refine_2 n:WithTop ℕ∞d:ℕf:SpaceTime d → Lorentz.Vector dh:ContDiff ℝ n fν:Fin 1 ⊕ Fin d⊢ ContDiff ℝ n fun x => f x ν exact (Lorentz.Vector.coordCLM ν).contDiff.comp h All goals completed! 🐙
lemma fderiv_vector {d : ℕ} (f : SpaceTime d → Lorentz.Vector d)
(hf : Differentiable ℝ f) (y dt : SpaceTime d) (ν : Fin 1 ⊕ Fin d) :
fderiv ℝ f y dt ν = fderiv ℝ (fun x => f x ν) y dt := by d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (fun x => f x ν) y) dt
change _ = (fderiv ℝ (Lorentz.Vector.coordCLM ν ∘ f) y) dt d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (⇑(Lorentz.Vector.coordCLM ν) ∘ f) y) dt
rw [fderiv_comp _ (by d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.coordCLM ν)) (f y) d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (⇑(Lorentz.Vector.coordCLM ν)) (f y) ∘SL fderiv ℝ f y) dt fun_prop All goals completed! 🐙 d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (⇑(Lorentz.Vector.coordCLM ν)) (f y) ∘SL fderiv ℝ f y) dt) (by d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ DifferentiableAt ℝ f y d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (⇑(Lorentz.Vector.coordCLM ν)) (f y) ∘SL fderiv ℝ f y) dt fun_prop All goals completed! 🐙 d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (⇑(Lorentz.Vector.coordCLM ν)) (f y) ∘SL fderiv ℝ f y) dt)] d:ℕf:SpaceTime d → Lorentz.Vector dhf:Differentiable ℝ fy:SpaceTime ddt:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ f y) dt ν = (fderiv ℝ (⇑(Lorentz.Vector.coordCLM ν)) (f y) ∘SL fderiv ℝ f y) dt
simp only [ContinuousLinearMap.fderiv, ContinuousLinearMap.coe_comp, Function.comp_apply,
Lorentz.Vector.coordCLM_apply] All goals completed! 🐙lemma deriv_apply_eq {d : ℕ} (μ ν : Fin 1 ⊕ Fin d) (f : SpaceTime d → Lorentz.Vector d)
(hf : Differentiable ℝ f)
(y : SpaceTime d) :
∂_ μ f y ν = fderiv ℝ (fun x => f x ν) y (Lorentz.Vector.basis μ) :=
fderiv_vector f hf y _ ν
@[simp]
lemma deriv_coord {d : ℕ} (μ ν : Fin 1 ⊕ Fin d) :
∂_ μ (fun x => x ν) = if μ = ν then 1 else 0 := by d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ (∂_ μ fun x => x ν) = if μ = ν then 1 else 0
change ∂_ μ (coordCLM ν) = _ d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ∂_ μ ⇑(coordCLM ν) = if μ = ν then 1 else 0
funext x d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime d⊢ ∂_ μ (⇑(coordCLM ν)) x = (if μ = ν then 1 else 0) x
rw [deriv_eq d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(coordCLM ν)) x) (Lorentz.Vector.basis μ) = (if μ = ν then 1 else 0) x d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(coordCLM ν)) x) (Lorentz.Vector.basis μ) = (if μ = ν then 1 else 0) x] d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(coordCLM ν)) x) (Lorentz.Vector.basis μ) = (if μ = ν then 1 else 0) x
simp only [ContinuousLinearMap.fderiv] d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (coordCLM ν) (Lorentz.Vector.basis μ) = (if μ = ν then 1 else 0) x
simp [coordCLM] d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (if μ = ν then 1 else 0) = (if μ = ν then 1 else 0) x
split_ifs pos d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime dh✝:μ = ν⊢ 1 = 1 xneg d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime dh✝:¬μ = ν⊢ 0 = 0 x <;> pos d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime dh✝:μ = ν⊢ 1 = 1 xneg d:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dx:SpaceTime dh✝:¬μ = ν⊢ 0 = 0 x rfl All goals completed! 🐙A.3. Derivative of the zero function
@[simp]
lemma deriv_zero {d : ℕ} (μ : Fin 1 ⊕ Fin d) : SpaceTime.deriv μ (fun _ => (0 : ℝ)) = 0 := by d:ℕμ:Fin 1 ⊕ Fin d⊢ (∂_ μ fun x => 0) = 0
ext y d:ℕμ:Fin 1 ⊕ Fin dy:SpaceTime d⊢ ∂_ μ (fun x => 0) y = 0 y
simp [SpaceTime.deriv_eq] All goals completed! 🐙attribute [-simp] Fintype.sum_sum_typeA.4. Smoothness and differentiability of the derivative
If f is C^{n+1} then ∂_ μ f is C^n.
@[fun_prop]
lemma contDiff_deriv {M : Type} [NormedAddCommGroup M] [NormedSpace ℝ M] {d : ℕ}
{n : WithTop ℕ∞} (μ : Fin 1 ⊕ Fin d) (f : SpaceTime d → M) (hf : ContDiff ℝ (n + 1) f) :
ContDiff ℝ n (∂_ μ f) := by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕn:WithTop ℕ∞μ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ (n + 1) f⊢ ContDiff ℝ n (∂_ μ f)
-- `∂_ μ f = fun x => fderiv ℝ f x (Lorentz.Vector.basis μ)`; use
-- `ContDiff.clm_apply` with `ContDiff.fderiv_right`.
exact (ContDiff.fderiv_right (m := n) hf (by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕn:WithTop ℕ∞μ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ (n + 1) f⊢ n + 1 ≤ n + 1 rfl All goals completed! 🐙)).clm_apply contDiff_const
If f is C^2 then ∂_ μ f is differentiable.
@[fun_prop]
lemma differentiable_deriv {M : Type} [NormedAddCommGroup M] [NormedSpace ℝ M] {d : ℕ}
(μ : Fin 1 ⊕ Fin d) (f : SpaceTime d → M) (hf : ContDiff ℝ 2 f) :
Differentiable ℝ (∂_ μ f) :=
(contDiff_deriv μ f (n := 1) (by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 f⊢ ContDiff ℝ (1 + 1) f norm_cast All goals completed! 🐙)).differentiable one_ne_zeroA.5. Derivatives commute
Derivatives on spacetime commute with one another (Clairaut's theorem).
lemma deriv_commute {M : Type} [NormedAddCommGroup M] [NormedSpace ℝ M] {d : ℕ}
(μ ν : Fin 1 ⊕ Fin d) (f : SpaceTime d → M) (hf : ContDiff ℝ 2 f) :
∂_ μ (∂_ ν f) = ∂_ ν (∂_ μ f) := by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 f⊢ ∂_ μ (∂_ ν f) = ∂_ ν (∂_ μ f)
ext x M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ ∂_ μ (∂_ ν f) x = ∂_ ν (∂_ μ f) x
show fderiv ℝ (fun y => fderiv ℝ f y (Lorentz.Vector.basis ν)) x (Lorentz.Vector.basis μ) =
fderiv ℝ (fun y => fderiv ℝ f y (Lorentz.Vector.basis μ)) x (Lorentz.Vector.basis ν) M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ (fderiv ℝ (fun y => (fderiv ℝ f y) (Lorentz.Vector.basis ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun y => (fderiv ℝ f y) (Lorentz.Vector.basis μ)) x) (Lorentz.Vector.basis ν)
rw [fderiv_clm_apply, M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ (fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis ν) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis ν))
(Lorentz.Vector.basis μ) =
(fderiv ℝ (fun y => (fderiv ℝ f y) (Lorentz.Vector.basis μ)) x) (Lorentz.Vector.basis ν)hc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ (fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis ν) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis ν))
(Lorentz.Vector.basis μ) =
(fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis μ) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis μ))
(Lorentz.Vector.basis ν)hc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x fderiv_clm_apply M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ (fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis ν) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis ν))
(Lorentz.Vector.basis μ) =
(fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis μ) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis μ))
(Lorentz.Vector.basis ν)hc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ (fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis ν) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis ν))
(Lorentz.Vector.basis μ) =
(fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis μ) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis μ))
(Lorentz.Vector.basis ν)hc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x] M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ (fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis ν) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis ν))
(Lorentz.Vector.basis μ) =
(fderiv ℝ f x ∘SL fderiv ℝ (fun y => Lorentz.Vector.basis μ) x +
(fderiv ℝ (fderiv ℝ f) x).flip (Lorentz.Vector.basis μ))
(Lorentz.Vector.basis ν)hc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x
simp only [fderiv_fun_const, Pi.ofNat_apply, ContinuousLinearMap.comp_zero, zero_add,
ContinuousLinearMap.flip_apply] M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ ((fderiv ℝ (fderiv ℝ f) x) (Lorentz.Vector.basis μ)) (Lorentz.Vector.basis ν) =
((fderiv ℝ (fderiv ℝ f) x) (Lorentz.Vector.basis ν)) (Lorentz.Vector.basis μ)hc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x
rw [IsSymmSndFDerivAt.eq M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ ((fderiv ℝ (fderiv ℝ f) x) (Lorentz.Vector.basis ν)) (Lorentz.Vector.basis μ) =
((fderiv ℝ (fderiv ℝ f) x) (Lorentz.Vector.basis ν)) (Lorentz.Vector.basis μ)h M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ IsSymmSndFDerivAt ℝ f xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x h M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ IsSymmSndFDerivAt ℝ f xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x]h M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ IsSymmSndFDerivAt ℝ f xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis μ) xhc M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fderiv ℝ f) xhu M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ DifferentiableAt ℝ (fun y => Lorentz.Vector.basis ν) x
· h M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ IsSymmSndFDerivAt ℝ f x exact hf.contDiffAt.isSymmSndFDerivAt (by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:ContDiff ℝ 2 fx:SpaceTime d⊢ minSmoothness ℝ 2 ≤ 2 simp [minSmoothness_of_isRCLikeNormedField] All goals completed! 🐙)
all_goals fun_prop All goals completed! 🐙A.6. The derivative of a function composed with a Lorentz transformation
lemma deriv_comp_lorentz_action {M : Type} [NormedAddCommGroup M] [NormedSpace ℝ M] {d : ℕ}
(μ : Fin 1 ⊕ Fin d)
(f : SpaceTime d → M) (hf : Differentiable ℝ f) (Λ : LorentzGroup d)
(x : SpaceTime d) :
∂_ μ (fun x => f (Λ • x)) x = ∑ ν, Λ.1 ν μ • ∂_ ν f (Λ • x) := by M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ ∂_ μ (fun x => f (Λ • x)) x = ∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)
change fderiv ℝ (f ∘ Lorentz.Vector.actionCLM Λ) x (Lorentz.Vector.basis μ) = _ M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ (f ∘ ⇑(Lorentz.Vector.actionCLM Λ)) x) (Lorentz.Vector.basis μ) = ∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)
rw [fderiv_comp M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f ((Lorentz.Vector.actionCLM Λ) x) ∘SL fderiv ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x) (Lorentz.Vector.basis μ) =
∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f ((Lorentz.Vector.actionCLM Λ) x) ∘SL fderiv ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x) (Lorentz.Vector.basis μ) =
∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x] M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f ((Lorentz.Vector.actionCLM Λ) x) ∘SL fderiv ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x) (Lorentz.Vector.basis μ) =
∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x
simp only [Lorentz.Vector.actionCLM_apply, ContinuousLinearMap.fderiv,
ContinuousLinearMap.coe_comp, Function.comp_apply] M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f (Λ • x)) (Λ • Lorentz.Vector.basis μ) = ∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x
-- Fintype.sum_sum_type
rw [Lorentz.Vector.smul_basis M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f (Λ • x)) (∑ ν, ↑Λ ν μ • Lorentz.Vector.basis ν) = ∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f (Λ • x)) (∑ ν, ↑Λ ν μ • Lorentz.Vector.basis ν) = ∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x] M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ (fderiv ℝ f (Λ • x)) (∑ ν, ↑Λ ν μ • Lorentz.Vector.basis ν) = ∑ ν, ↑Λ ν μ • ∂_ ν f (Λ • x)hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x
simp [deriv_eq] hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x)hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x
· hg M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ f ((Lorentz.Vector.actionCLM Λ) x) fun_prop All goals completed! 🐙
· hf M:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Md:ℕμ:Fin 1 ⊕ Fin df:SpaceTime d → Mhf:Differentiable ℝ fΛ:↑(LorentzGroup d)x:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Lorentz.Vector.actionCLM Λ)) x fun_prop All goals completed! 🐙
lemma deriv_equivariant (f : SpaceTime d → M) (Λ : LorentzGroup d) (x : SpaceTime d)
(hf : Differentiable ℝ f) (μ : Fin 1 ⊕ Fin d) :
∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x =
∑ ν, Λ⁻¹.1 ν μ • Λ • ∂_ ν f (Λ⁻¹ • x) := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin d⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)
have h1 (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d) :
∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x =
Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x := by
change ∂_ μ (TensorSpecies.Tensorial.actionCLM _ Λ ∘ fun x => f (Λ⁻¹ • x)) x = _ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ ∂_ μ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ) ∘ fun x => f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)
rw [deriv_eq, n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ) ∘ fun x => f (Λ⁻¹ • x)) x) (Lorentz.Vector.basis μ) =
Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x)) ∘SL fderiv ℝ (fun x => f (Λ⁻¹ • x)) x)
(Lorentz.Vector.basis μ) =
Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) xhg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x))hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x) fderiv_comp n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x)) ∘SL fderiv ℝ (fun x => f (Λ⁻¹ • x)) x)
(Lorentz.Vector.basis μ) =
Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) xhg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x))hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x)) ∘SL fderiv ℝ (fun x => f (Λ⁻¹ • x)) x)
(Lorentz.Vector.basis μ) =
Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) xhg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x))hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ (fderiv ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x)) ∘SL fderiv ℝ (fun x => f (Λ⁻¹ • x)) x)
(Lorentz.Vector.basis μ) =
Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) xhg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x))hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)
simp [Tensorial.actionCLM_apply, ← deriv_eq] hg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x))hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)
· hg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (⇑(Tensorial.actionCLM (realLorentzTensor d) Λ)) (f (Λ⁻¹ • x)) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x) fun_prop All goals completed! 🐙 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)
· hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x✝:SpaceTime dhf:Differentiable ℝ fμ✝:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ DifferentiableAt ℝ (fun x => f (Λ⁻¹ • x)) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x) exact (hf.comp (Lorentz.Vector.actionCLM Λ⁻¹).differentiable).differentiableAt n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)
rw [h1 μ x, n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Λ • ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν f (Λ⁻¹ • x) = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f deriv_comp_lorentz_action n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Λ • ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν f (Λ⁻¹ • x) = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Λ • ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν f (Λ⁻¹ • x) = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Λ • ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν f (Λ⁻¹ • x) = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f
change (TensorSpecies.Tensorial.actionCLM _ Λ) (∑ ν, (Λ⁻¹).1 ν μ • ∂_ ν f (Λ⁻¹ • x)) = _ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ (Tensorial.actionCLM (realLorentzTensor d) Λ) (∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν f (Λ⁻¹ • x)) = ∑ ν, ↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x)hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f
simp [TensorSpecies.Tensorial.actionCLM_apply, map_sum, map_smul] hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f
· hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dh1:∀ (μ : Fin 1 ⊕ Fin d) (x : SpaceTime d), ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • ∂_ μ (fun x => f (Λ⁻¹ • x)) x⊢ Differentiable ℝ f fun_prop All goals completed! 🐙A.7. Spacetime derivatives in terms of time and space derivatives
lemma deriv_sum_inr {d : ℕ} {M : Type} [NormedAddCommGroup M] [NormedSpace ℝ M]
(c : SpeedOfLight) (f : SpaceTime d → M)
(hf : Differentiable ℝ f) (x : SpaceTime d) (i : Fin d) :
∂_ (Sum.inr i) f x
= Space.deriv i (fun y => f ((toTimeAndSpace c).symm ((toTimeAndSpace c x).1, y)))
(toTimeAndSpace c x).2 := by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ ∂_ (Sum.inr i) f x =
Space.deriv i (fun y => f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y))) ((toTimeAndSpace c) x).2
rw [deriv_eq, d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inr i)) =
Space.deriv i (fun y => f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y))) ((toTimeAndSpace c) x).2 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inr i)) =
(fderiv ℝ (fun y => f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y))) ((toTimeAndSpace c) x).2)
(Space.basis i) Space.deriv_eq d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inr i)) =
(fderiv ℝ (fun y => f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y))) ((toTimeAndSpace c) x).2)
(Space.basis i) d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inr i)) =
(fderiv ℝ (fun y => f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y))) ((toTimeAndSpace c) x).2)
(Space.basis i)] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inr i)) =
(fderiv ℝ (fun y => f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y))) ((toTimeAndSpace c) x).2)
(Space.basis i)
conv_rhs => rw [fderiv_fun_comp _ (by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)) fun_prop All goals completed! 🐙) (by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun y => (toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y)) ((toTimeAndSpace c) x).2 fun_prop All goals completed! 🐙)]
simp only [Prod.mk.eta, ContinuousLinearEquiv.symm_apply_apply, ContinuousLinearMap.coe_comp,
Function.comp_apply] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inr i)) =
(fderiv ℝ f x)
((fderiv ℝ (fun y => (toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y)) ((toTimeAndSpace c) x).2)
(Space.basis i))
congr 1 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(fderiv ℝ (fun y => (toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, y)) ((toTimeAndSpace c) x).2) (Space.basis i)
rw [fderiv_fun_comp e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(fderiv ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2) ∘SL
fderiv ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2)
(Space.basis i)e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(fderiv ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2) ∘SL
fderiv ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2)
(Space.basis i)e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2]e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(fderiv ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2) ∘SL
fderiv ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2)
(Space.basis i)e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2
simp only [Prod.mk.eta, toTimeAndSpace_symm_fderiv, ContinuousLinearMap.coe_comp,
ContinuousLinearEquiv.coe_coe, Function.comp_apply] e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(toTimeAndSpace c).symm ((fderiv ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2) (Space.basis i))e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2
change _ = (toTimeAndSpace c).symm ((fderiv ℝ ((toTimeAndSpace c x).1, ·) (toTimeAndSpace c x).2)
(Space.basis i)) e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(toTimeAndSpace c).symm
((fderiv ℝ (fun x_1 => (((toTimeAndSpace c) x).1, x_1)) ((toTimeAndSpace c) x).2) (Space.basis i))e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2
rw [DifferentiableAt.fderiv_prodMk e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(toTimeAndSpace c).symm
(((fderiv ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2).prod
(fderiv ℝ (fun x => x) ((toTimeAndSpace c) x).2))
(Space.basis i))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x => x) ((toTimeAndSpace c) x).2e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(toTimeAndSpace c).symm
(((fderiv ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2).prod
(fderiv ℝ (fun x => x) ((toTimeAndSpace c) x).2))
(Space.basis i))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x => x) ((toTimeAndSpace c) x).2e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2]e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) =
(toTimeAndSpace c).symm
(((fderiv ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2).prod
(fderiv ℝ (fun x => x) ((toTimeAndSpace c) x).2))
(Space.basis i))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x => x) ((toTimeAndSpace c) x).2e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2
simp only [fderiv_fun_const, Pi.zero_apply, fderiv_fun_id, ContinuousLinearMap.prod_apply,
_root_.zero_apply, ContinuousLinearMap.coe_id', id_eq] e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) = (toTimeAndSpace c).symm (0, Space.basis i)e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x => x) ((toTimeAndSpace c) x).2e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2
trans (toTimeAndSpace c).symm (0, Space.basis i) d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) = (toTimeAndSpace c).symm (0, Space.basis i)d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (toTimeAndSpace c).symm (0, Space.basis i) = (toTimeAndSpace c).symm (0, Space.basis i)e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x_1 => ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (fun x => x) ((toTimeAndSpace c) x).2e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ DifferentiableAt ℝ (Prod.mk ((toTimeAndSpace c) x).1) ((toTimeAndSpace c) x).2
· d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) = (toTimeAndSpace c).symm (0, Space.basis i) rw [← toTimeAndSpace_basis_inr (c := c) d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) = (toTimeAndSpace c).symm ((toTimeAndSpace c) (Lorentz.Vector.basis (Sum.inr i))) d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) = (toTimeAndSpace c).symm ((toTimeAndSpace c) (Lorentz.Vector.basis (Sum.inr i)))] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ Lorentz.Vector.basis (Sum.inr i) = (toTimeAndSpace c).symm ((toTimeAndSpace c) (Lorentz.Vector.basis (Sum.inr i)))
simp All goals completed! 🐙
· d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime di:Fin d⊢ (toTimeAndSpace c).symm (0, Space.basis i) = (toTimeAndSpace c).symm (0, Space.basis i) rfl All goals completed! 🐙
repeat' fun_prop All goals completed! 🐙
lemma deriv_sum_inl {d : ℕ} {M : Type} [NormedAddCommGroup M]
[NormedSpace ℝ M] (c : SpeedOfLight) (f : SpaceTime d → M)
(hf : Differentiable ℝ f) (x : SpaceTime d) :
∂_ (Sum.inl 0) f x
= (1/(c : ℝ)) • Time.deriv (fun t => f ((toTimeAndSpace c).symm (t, (toTimeAndSpace c x).2)))
(toTimeAndSpace c x).1 := by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ ∂_ (Sum.inl 0) f x =
(1 / c.val) • Time.deriv (fun t => f ((toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))) ((toTimeAndSpace c) x).1
rw [deriv_eq, d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(1 / c.val) • Time.deriv (fun t => f ((toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))) ((toTimeAndSpace c) x).1 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(1 / c.val) •
(fderiv ℝ (fun t => f ((toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))) ((toTimeAndSpace c) x).1) 1 Time.deriv_eq d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(1 / c.val) •
(fderiv ℝ (fun t => f ((toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))) ((toTimeAndSpace c) x).1) 1 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(1 / c.val) •
(fderiv ℝ (fun t => f ((toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))) ((toTimeAndSpace c) x).1) 1] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(1 / c.val) •
(fderiv ℝ (fun t => f ((toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))) ((toTimeAndSpace c) x).1) 1
conv_rhs => rw [fderiv_fun_comp _ (by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ f ((toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)) fun_prop All goals completed! 🐙) (by d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1 fun_prop All goals completed! 🐙)]
simp only [Fin.isValue, Prod.mk.eta, ContinuousLinearEquiv.symm_apply_apply,
ContinuousLinearMap.coe_comp, Function.comp_apply] d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(1 / c.val) •
(fderiv ℝ f x)
((fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1)
trans
(fderiv ℝ f x)
((1 / c.val) • (fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2))
((toTimeAndSpace c) x).1) 1) d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(fderiv ℝ f x)
((1 / c.val) •
(fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1)d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x)
((1 / c.val) •
(fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1) =
(1 / c.val) •
(fderiv ℝ f x)
((fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1)
swap d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x)
((1 / c.val) •
(fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1) =
(1 / c.val) •
(fderiv ℝ f x)
((fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1)d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x) (Lorentz.Vector.basis (Sum.inl 0)) =
(fderiv ℝ f x)
((1 / c.val) •
(fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1)
· d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (fderiv ℝ f x)
((1 / c.val) •
(fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1) =
(1 / c.val) •
(fderiv ℝ f x)
((fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1) exact ContinuousLinearMap.map_smul_of_tower (fderiv ℝ f x) (1 / c.val) _ All goals completed! 🐙
congr 1 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) • (fderiv ℝ (fun t => (toTimeAndSpace c).symm (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1
rw [fderiv_fun_comp e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) •
(fderiv ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2) ∘SL
fderiv ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1)
1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) •
(fderiv ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2) ∘SL
fderiv ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1)
1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1]e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) •
(fderiv ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2) ∘SL
fderiv ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1)
1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
simp only [Fin.isValue, Prod.mk.eta, toTimeAndSpace_symm_fderiv, ContinuousLinearMap.coe_comp,
ContinuousLinearEquiv.coe_coe, Function.comp_apply] e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) • (toTimeAndSpace c).symm ((fderiv ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1) 1)e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
rw [DifferentiableAt.fderiv_prodMk e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) •
(toTimeAndSpace c).symm
(((fderiv ℝ (fun t => t) ((toTimeAndSpace c) x).1).prod
(fderiv ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1))
1)e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) •
(toTimeAndSpace c).symm
(((fderiv ℝ (fun t => t) ((toTimeAndSpace c) x).1).prod
(fderiv ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1))
1)e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1]e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) =
(1 / c.val) •
(toTimeAndSpace c).symm
(((fderiv ℝ (fun t => t) ((toTimeAndSpace c) x).1).prod
(fderiv ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1))
1)e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
simp only [Fin.isValue, fderiv_fun_id, fderiv_fun_const, Pi.zero_apply,
ContinuousLinearMap.prod_apply, ContinuousLinearMap.coe_id', id_eq,
_root_.zero_apply] e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (1 / c.val) • (toTimeAndSpace c).symm (1, 0)e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
rw [← map_smul e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (toTimeAndSpace c).symm ((1 / c.val) • (1, 0))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (toTimeAndSpace c).symm ((1 / c.val) • (1, 0))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1]e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (toTimeAndSpace c).symm ((1 / c.val) • (1, 0))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
rw [← toTimeAndSpace_basis_inl' (c := c) e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (toTimeAndSpace c).symm ((toTimeAndSpace c) (Lorentz.Vector.basis (Sum.inl 0)))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1 e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (toTimeAndSpace c).symm ((toTimeAndSpace c) (Lorentz.Vector.basis (Sum.inl 0)))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1]e_6 d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ Lorentz.Vector.basis (Sum.inl 0) = (toTimeAndSpace c).symm ((toTimeAndSpace c) (Lorentz.Vector.basis (Sum.inl 0)))e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
simp only [Fin.isValue, ContinuousLinearEquiv.symm_apply_apply] e_6.hf₁ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => t) ((toTimeAndSpace c) x).1e_6.hf₂ d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => ((toTimeAndSpace c) x).2) ((toTimeAndSpace c) x).1e_6.hg d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ ⇑(toTimeAndSpace c).symm (((toTimeAndSpace c) x).1, ((toTimeAndSpace c) x).2)e_6.hf d:ℕM:Typeinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mc:SpeedOfLightf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ DifferentiableAt ℝ (fun t => (t, ((toTimeAndSpace c) x).2)) ((toTimeAndSpace c) x).1
repeat' fun_prop All goals completed! 🐙B. Derivatives of distributions
lemma distDeriv_apply {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(μ : Fin 1 ⊕ Fin d) (f : (SpaceTime d) →d[ℝ] M) (ε : 𝓢(SpaceTime d, ℝ)) :
distDeriv μ f ε = fderivD ℝ f ε (Lorentz.Vector.basis μ) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)⊢ ((distDeriv μ) f) ε = (((fderivD ℝ) f) ε) (Lorentz.Vector.basis μ)
simp [distDeriv, Distribution.fderivD] All goals completed! 🐙lemma distDeriv_apply' {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(μ : Fin 1 ⊕ Fin d) (f : (SpaceTime d) →d[ℝ] M) (ε : 𝓢(SpaceTime d, ℝ)) :
distDeriv μ f ε =
- f ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ))
((fderivCLM ℝ (SpaceTime d) ℝ) ε)) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)⊢ ((distDeriv μ) f) ε =
-f ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) ε))
simp [distDeriv_apply, Distribution.fderivD] All goals completed! 🐙lemma apply_fderiv_eq_distDeriv {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(μ : Fin 1 ⊕ Fin d) (f : (SpaceTime d) →d[ℝ] M) (ε : 𝓢(SpaceTime d, ℝ)) :
f ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ))
((fderivCLM ℝ (SpaceTime d) ℝ) ε)) =
- distDeriv μ f ε := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)⊢ f ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) ε)) =
-((distDeriv μ) f) ε
simp [distDeriv_apply'] All goals completed! 🐙B.1. Commutation of derivatives of distributions
lemma distDeriv_commute {M d} [NormedAddCommGroup M] [NormedSpace ℝ M]
(μ ν : Fin 1 ⊕ Fin d) (f : (SpaceTime d) →d[ℝ] M) :
distDeriv μ (distDeriv ν f) = distDeriv ν (distDeriv μ f) := by M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] M⊢ (distDeriv μ) ((distDeriv ν) f) = (distDeriv ν) ((distDeriv μ) f)
ext κ M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mκ:𝓢(SpaceTime d, ℝ)⊢ ((distDeriv μ) ((distDeriv ν) f)) κ = ((distDeriv ν) ((distDeriv μ) f)) κ
simp only [distDeriv_apply, fderivD_apply, neg_neg] M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mκ:𝓢(SpaceTime d, ℝ)⊢ f
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis ν))
((fderivCLM ℝ (SpaceTime d) ℝ)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) κ)))) =
f
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ))
((fderivCLM ℝ (SpaceTime d) ℝ)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis ν)) ((fderivCLM ℝ (SpaceTime d) ℝ) κ))))
congr 1 e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mκ:𝓢(SpaceTime d, ℝ)⊢ (SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis ν))
((fderivCLM ℝ (SpaceTime d) ℝ)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) κ))) =
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ))
((fderivCLM ℝ (SpaceTime d) ℝ)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis ν)) ((fderivCLM ℝ (SpaceTime d) ℝ) κ)))
ext x e_6 M:Typed:ℕinst✝¹:NormedAddCommGroup Minst✝:NormedSpace ℝ Mμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin df:(SpaceTime d)→d[ℝ] Mκ:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis ν))
((fderivCLM ℝ (SpaceTime d) ℝ)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) κ))))
x =
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ))
((fderivCLM ℝ (SpaceTime d) ℝ)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis ν)) ((fderivCLM ℝ (SpaceTime d) ℝ) κ))))
x
exact congrFun (deriv_commute ν μ ⇑κ (smooth κ 2)) x All goals completed! 🐙B.2. Lorentz group action on derivatives of distributions
We now show how the Lorentz group action on distributions interacts with derivatives.
lemma distDeriv_comp_lorentz_action {μ : Fin 1 ⊕ Fin d} (Λ : LorentzGroup d)
(f : (SpaceTime d) →d[ℝ] M) :
distDeriv μ (Λ • f) = ∑ ν, Λ⁻¹.1 ν μ • (Λ • distDeriv ν f) := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ (distDeriv μ) (Λ • f) = ∑ ν, ↑Λ⁻¹ ν μ • Λ • (distDeriv ν) f
symm n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ ∑ ν, ↑Λ⁻¹ ν μ • Λ • (distDeriv ν) f = (distDeriv μ) (Λ • f)
trans (∑ ν, Λ • Λ⁻¹.1 ν μ • (distDeriv ν) f) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ ∑ ν, ↑Λ⁻¹ ν μ • Λ • (distDeriv ν) f = ∑ ν, Λ • ↑Λ⁻¹ ν μ • (distDeriv ν) fn:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ ∑ ν, Λ • ↑Λ⁻¹ ν μ • (distDeriv ν) f = (distDeriv μ) (Λ • f)
· n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ ∑ ν, ↑Λ⁻¹ ν μ • Λ • (distDeriv ν) f = ∑ ν, Λ • ↑Λ⁻¹ ν μ • (distDeriv ν) f congr e_f n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ (fun ν => ↑Λ⁻¹ ν μ • Λ • (distDeriv ν) f) = fun ν => Λ • ↑Λ⁻¹ ν μ • (distDeriv ν) f
funext i e_f n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mi:Fin 1 ⊕ Fin d⊢ ↑Λ⁻¹ i μ • Λ • (distDeriv i) f = Λ • ↑Λ⁻¹ i μ • (distDeriv i) f
rw [SMulCommClass.smul_comm e_f n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mi:Fin 1 ⊕ Fin d⊢ Λ • ↑Λ⁻¹ i μ • (distDeriv i) f = Λ • ↑Λ⁻¹ i μ • (distDeriv i) f All goals completed! 🐙] All goals completed! 🐙
trans Λ • (∑ ν, Λ⁻¹.1 ν μ • (distDeriv ν) f) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ ∑ ν, Λ • ↑Λ⁻¹ ν μ • (distDeriv ν) f = Λ • ∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) fn:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ Λ • ∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f = (distDeriv μ) (Λ • f)
· n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ ∑ ν, Λ • ↑Λ⁻¹ ν μ • (distDeriv ν) f = Λ • ∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f exact Eq.symm Finset.smul_sum All goals completed! 🐙
ext η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (Λ • ∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) η = ((distDeriv μ) (Λ • f)) η
rw [lorentzGroup_smul_dist_apply, n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) = ((distDeriv μ) (Λ • f)) η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ •
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))) distDeriv_apply, n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) = (((fderivD ℝ) (Λ • f)) η) (Lorentz.Vector.basis μ) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ •
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))) fderivD_apply, n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ • f) ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ •
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))))
lorentzGroup_smul_dist_apply n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ •
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ •
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))))] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-(Λ •
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))))
rw [← smul_neg n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
Λ •
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
Λ •
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
Λ •
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
congr e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (∑ ν, ↑Λ⁻¹ ν μ • (distDeriv ν) f) ((schwartzAction Λ⁻¹) η) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
rw [_root_.sum_apply e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ∑ i, (↑Λ⁻¹ i μ • (distDeriv i) f) ((schwartzAction Λ⁻¹) η) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))) e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ∑ i, (↑Λ⁻¹ i μ • (distDeriv i) f) ((schwartzAction Λ⁻¹) η) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))]e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ∑ i, (↑Λ⁻¹ i μ • (distDeriv i) f) ((schwartzAction Λ⁻¹) η) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
simp only [FunLike.coe_smul, Pi.smul_apply] e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ∑ x, ↑Λ⁻¹ x μ • ((distDeriv x) f) ((schwartzAction Λ⁻¹) η) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
conv_lhs =>
enter [2, x] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:Fin 1 ⊕ Fin d| ↑Λ⁻¹ x μ • ((distDeriv x) f) ((schwartzAction Λ⁻¹) η)
rw [distDeriv_apply, fderivD_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:Fin 1 ⊕ Fin d| ↑Λ⁻¹ x μ •
-f
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
simp only [smul_neg] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:Fin 1 ⊕ Fin d| -(↑Λ⁻¹ x μ •
f
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))))
rw [← map_smul] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:Fin 1 ⊕ Fin d| -f
(↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
rw [Finset.sum_neg_distrib e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ -∑ x,
f
(↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))) e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ -∑ x,
f
(↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))]e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ -∑ x,
f
(↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
-f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
congr e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ∑ x,
f
(↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
rw [← map_sum e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ f
(∑ x,
↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))) e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ f
(∑ x,
↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))]e_a n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ f
(∑ x,
↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η))) =
f
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
congr e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ∑ x,
↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)) =
(schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η))
/- Reduced to Schwartz maps -/
ext x e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ (∑ x,
↑Λ⁻¹ x μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis x))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
x =
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
x
rw [_root_.sum_apply e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ ∑ i,
(↑Λ⁻¹ i μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis i))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
x =
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
x e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ ∑ i,
(↑Λ⁻¹ i μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis i))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
x =
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
x]e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ ∑ i,
(↑Λ⁻¹ i μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis i))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
x =
((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
x
symm e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ ((schwartzAction Λ⁻¹)
((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis μ)) ((fderivCLM ℝ (SpaceTime d) ℝ) η)))
x =
∑ i,
(↑Λ⁻¹ i μ •
(SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Lorentz.Vector.basis i))
((fderivCLM ℝ (SpaceTime d) ℝ) ((schwartzAction Λ⁻¹) η)))
x
simp [schwartzAction_apply] e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ (fderiv ℝ (⇑η) (Λ • x)) (Lorentz.Vector.basis μ) =
∑ x_1, ↑Λ⁻¹ x_1 μ * (fderiv ℝ (⇑((schwartzAction Λ⁻¹) η)) x) (Lorentz.Vector.basis x_1)
change ∂_ μ η (Λ • x) = ∑ ν, Λ⁻¹.1 ν μ • ∂_ ν (schwartzAction Λ⁻¹ η) (x) e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ ∂_ μ (⇑η) (Λ • x) = ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν (⇑((schwartzAction Λ⁻¹) η)) x
obtain ⟨η, rfl⟩ := schwartzAction_surjective Λ η e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (⇑((schwartzAction Λ) η)) (Λ • x) = ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν (⇑((schwartzAction Λ⁻¹) ((schwartzAction Λ) η))) x
simp only [smul_eq_mul] e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (⇑((schwartzAction Λ) η)) (Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑((schwartzAction Λ⁻¹) ((schwartzAction Λ) η))) x
rw [schwartzAction_mul_apply e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (⇑((schwartzAction Λ) η)) (Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑((schwartzAction (Λ⁻¹ * Λ)) η)) x e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (⇑((schwartzAction Λ) η)) (Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑((schwartzAction (Λ⁻¹ * Λ)) η)) x]e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (⇑((schwartzAction Λ) η)) (Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑((schwartzAction (Λ⁻¹ * Λ)) η)) x
simp only [inv_mul_cancel, map_one, one_apply_eq_self] e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (⇑((schwartzAction Λ) η)) (Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑η) x
change ∂_ μ (fun x => η (Λ⁻¹ • x)) (Λ • x) = _ e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∂_ μ (fun x => η (Λ⁻¹ • x)) (Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑η) x
rw [deriv_comp_lorentz_action e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν (⇑η) (Λ⁻¹ • Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑η) xe_a.e_6.hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ Differentiable ℝ ⇑η e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν (⇑η) (Λ⁻¹ • Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑η) xe_a.e_6.hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ Differentiable ℝ ⇑η]e_a.e_6 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, ↑Λ⁻¹ ν μ • ∂_ ν (⇑η) (Λ⁻¹ • Λ • x) = ∑ x_1, ↑Λ⁻¹ x_1 μ * ∂_ x_1 (⇑η) xe_a.e_6.hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ Differentiable ℝ ⇑η
simp only [inv_smul_smul, smul_eq_mul] e_a.e_6.hf n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mμ:Fin 1 ⊕ Fin dΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mx:SpaceTime dη:𝓢(SpaceTime d, ℝ)⊢ Differentiable ℝ ⇑η
exact SchwartzMap.differentiable η All goals completed! 🐙C. Derivatives of tensors
Given a function f : SpaceTime d → M where M is a tensor space, we can define the
derivative of f as a tensor. In particular this is ∂_μ f viewed as a tensor in
Lorentz.CoVector d ⊗[ℝ] M.
The derivative of a tensor, as a tensor.
def tensorDeriv (f : SpaceTime d → M) :
SpaceTime d → Lorentz.CoVector d ⊗[ℝ] M := fun x =>
∑ μ, (Lorentz.CoVector.basis μ) ⊗ₜ (∂_ μ f x)
lemma tensorDeriv_equivariant (f : SpaceTime d → M) (Λ : LorentzGroup d) (x : SpaceTime d)
(hf : Differentiable ℝ f) :
tensorDeriv (fun x => Λ • f (Λ⁻¹ • x)) x =
Λ • tensorDeriv f (Λ⁻¹ • x) := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ f⊢ tensorDeriv (fun x => Λ • f (Λ⁻¹ • x)) x = Λ • tensorDeriv f (Λ⁻¹ • x)
simp [tensorDeriv] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ f⊢ ∑ μ, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x =
Λ • ∑ μ, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ f (Λ⁻¹ • x)
conv_lhs =>
enter [2, μ] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin d| Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ (fun x => Λ • f (Λ⁻¹ • x)) x
rw [deriv_equivariant f Λ x hf μ, tmul_sum] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin d| ∑ a, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] (↑Λ⁻¹ a μ • Λ • ∂_ a f (Λ⁻¹ • x))
enter [2, ν] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| Lorentz.CoVector.basis μ ⊗ₜ[ℝ] (↑Λ⁻¹ ν μ • Λ • ∂_ ν f (Λ⁻¹ • x))
rw [← smul_tmul] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| (↑Λ⁻¹ ν μ • Lorentz.CoVector.basis μ) ⊗ₜ[ℝ] (Λ • ∂_ ν f (Λ⁻¹ • x))
rw [Finset.sum_comm n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ f⊢ ∑ y, ∑ x_1, (↑Λ⁻¹ y x_1 • Lorentz.CoVector.basis x_1) ⊗ₜ[ℝ] (Λ • ∂_ y f (Λ⁻¹ • x)) =
Λ • ∑ μ, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ f (Λ⁻¹ • x) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ f⊢ ∑ y, ∑ x_1, (↑Λ⁻¹ y x_1 • Lorentz.CoVector.basis x_1) ⊗ₜ[ℝ] (Λ • ∂_ y f (Λ⁻¹ • x)) =
Λ • ∑ μ, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ f (Λ⁻¹ • x)] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ f⊢ ∑ y, ∑ x_1, (↑Λ⁻¹ y x_1 • Lorentz.CoVector.basis x_1) ⊗ₜ[ℝ] (Λ • ∂_ y f (Λ⁻¹ • x)) =
Λ • ∑ μ, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ f (Λ⁻¹ • x)
conv_lhs =>
enter [2, ν] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fν:Fin 1 ⊕ Fin d| ∑ x_1, (↑Λ⁻¹ ν x_1 • Lorentz.CoVector.basis x_1) ⊗ₜ[ℝ] (Λ • ∂_ ν f (Λ⁻¹ • x))
rw [← sum_tmul, ← Lorentz.CoVector.smul_basis, ← Tensorial.smul_prod] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ fν:Fin 1 ⊕ Fin d| Λ • Lorentz.CoVector.basis ν ⊗ₜ[ℝ] ∂_ ν f (Λ⁻¹ • x)
change _ = (TensorSpecies.Tensorial.smulLinearMap Λ) _ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → MΛ:↑(LorentzGroup d)x:SpaceTime dhf:Differentiable ℝ f⊢ ∑ ν, Λ • Lorentz.CoVector.basis ν ⊗ₜ[ℝ] ∂_ ν f (Λ⁻¹ • x) =
(Tensorial.smulLinearMap Λ) (∑ μ, Lorentz.CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ f (Λ⁻¹ • x))
simp [TensorSpecies.Tensorial.smulLinearMap_apply, map_sum] All goals completed! 🐙
lemma tensorDeriv_toTensor_basis_repr
{f : SpaceTime d → M}
(hf : Differentiable ℝ f) (x : SpaceTime d)
(b : Tensor.ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)) :
(Tensor.basis _).repr (Tensorial.toTensor (tensorDeriv f x)) b =
∂_ (Lorentz.CoVector.indexEquiv (ComponentIdx.prod b).1)
(fun x => (Tensor.basis _).repr (Tensorial.toTensor (f x))
(ComponentIdx.prod b).2) x := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (tensorDeriv f x))) b =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
x
simp [tensorDeriv] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∑ c_1,
((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (CoVector.basis c_1 ⊗ₜ[ℝ] ∂_ c_1 f x))) b =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
x
conv_lhs =>
enter [2, μ] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d| ((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (CoVector.basis μ ⊗ₜ[ℝ] ∂_ μ f x))) b
rw [Tensorial.toTensor_tprod, Tensor.prodT_basis_repr_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d| ((basis ![realLorentzTensor.Color.down]).repr (toTensor (CoVector.basis μ))) (ComponentIdx.prod b).1 *
((basis c).repr (toTensor (∂_ μ f x))) (ComponentIdx.prod b).2
simp [Lorentz.CoVector.toTensor_basis_eq_tensor_basis, Finsupp.single_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d| if CoVector.indexEquiv.symm μ = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ μ f x))) (ComponentIdx.prod b).2
else 0
rw [Finset.sum_eq_single (Lorentz.CoVector.indexEquiv (ComponentIdx.prod b).1) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
xh₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ b_1 f x))) (ComponentIdx.prod b).2
else 0) =
0h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
0 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
xh₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ b_1 f x))) (ComponentIdx.prod b).2
else 0) =
0h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
0] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
xh₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ b_1 f x))) (ComponentIdx.prod b).2
else 0) =
0h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
0
· n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
x simp n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2 =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
x
generalize (Lorentz.CoVector.indexEquiv (ComponentIdx.prod b).1) = μ at * n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d⊢ ((basis c).repr (toTensor (∂_ μ f x))) (ComponentIdx.prod b).2 =
∂_ μ (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2) x
generalize (ComponentIdx.prod b).2 = ν at * n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx c⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν = ∂_ μ (fun x => ((basis c).repr (toTensor (f x))) ν) x
have h1 (x : SpaceTime d) : ((Tensor.basis c).repr (Tensorial.toTensor (f x))) ν =
(ContinuousLinearMap.proj ν ∘L ((Tensor.basis c).map
(Tensorial.toTensor).symm).equivFunL.toContinuousLinearMap) (f x) := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (tensorDeriv f x))) b =
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) (fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2)
x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν = ∂_ μ (fun x => ((basis c).repr (toTensor (f x))) ν) x
simp n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν = ∂_ μ (fun x => ((basis c).repr (toTensor (f x))) ν) x n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν = ∂_ μ (fun x => ((basis c).repr (toTensor (f x))) ν) x
conv_rhs =>
enter [2, x] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx✝:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)x:SpaceTime d| ((basis c).repr (toTensor (f x))) ν
rw [h1 x] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx✝:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)x:SpaceTime d| (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)
conv_rhs =>
rw [deriv_eq, n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)| (fderiv ℝ (fun x => (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)) x) (Vector.basis μ) fderiv_fun_comp _ (by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ DifferentiableAt ℝ (⇑(ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL)) (f x) fun_prop All goals completed! 🐙) (by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ DifferentiableAt ℝ f x fun_prop All goals completed! 🐙)]
rw [ContinuousLinearMap.fderiv n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν =
((ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) ∘SL fderiv ℝ f x) (Vector.basis μ) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν =
((ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) ∘SL fderiv ℝ f x) (Vector.basis μ)] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin dν:ComponentIdx ch1:∀ (x : SpaceTime d),
((basis c).repr (toTensor (f x))) ν = (ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) (f x)⊢ ((basis c).repr (toTensor (∂_ μ f x))) ν =
((ContinuousLinearMap.proj ν ∘SL ↑((basis c).map toTensor.symm).equivFunL) ∘SL fderiv ℝ f x) (Vector.basis μ)
simp [deriv_eq] All goals completed! 🐙
· h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ b_1 f x))) (ComponentIdx.prod b).2
else 0) =
0 intro b' _ hb h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)b':Fin 1 ⊕ Fin da✝:b' ∈ Finset.univhb:b' ≠ CoVector.indexEquiv (ComponentIdx.prod b).1⊢ (if CoVector.indexEquiv.symm b' = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ b' f x))) (ComponentIdx.prod b).2
else 0) =
0
simp only [ite_eq_right_iff] h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)b':Fin 1 ⊕ Fin da✝:b' ∈ Finset.univhb:b' ≠ CoVector.indexEquiv (ComponentIdx.prod b).1⊢ CoVector.indexEquiv.symm b' = (ComponentIdx.prod b).1 →
((basis c).repr (toTensor (∂_ b' f x))) (ComponentIdx.prod b).2 = 0
intro hx h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)b':Fin 1 ⊕ Fin da✝:b' ∈ Finset.univhb:b' ≠ CoVector.indexEquiv (ComponentIdx.prod b).1hx:CoVector.indexEquiv.symm b' = (ComponentIdx.prod b).1⊢ ((basis c).repr (toTensor (∂_ b' f x))) (ComponentIdx.prod b).2 = 0
exact absurd (CoVector.indexEquiv.symm_apply_eq.mp hx) hb All goals completed! 🐙
· h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1) f x))) (ComponentIdx.prod b).2
else 0) =
0 simp All goals completed! 🐙
The expansion of tensorDeriv in terms of the tensor basis vector.
lemma tensorDeriv_eq_sum_tensor_basis
{f : SpaceTime d → M} (hf : Differentiable ℝ f) (x : SpaceTime d) :
tensorDeriv f x = ∑ b, ∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1)
(fun x => (Tensor.basis _).repr (toTensor (f x)) (ComponentIdx.prod b).2) x •
toTensor.symm (Tensor.basis _ b) := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ tensorDeriv f x =
∑ b,
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1)
(fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2) x •
toTensor.symm ((basis (Fin.append ![realLorentzTensor.Color.down] c)) b)
apply Tensorial.toTensor.injective n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ toTensor (tensorDeriv f x) =
toTensor
(∑ b,
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1)
(fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2) x •
toTensor.symm ((basis (Fin.append ![realLorentzTensor.Color.down] c)) b))
apply (Tensor.basis (Fin.append _ _)).repr.injective n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime d⊢ (basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (tensorDeriv f x)) =
(basis (Fin.append ![realLorentzTensor.Color.down] c)).repr
(toTensor
(∑ b,
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1)
(fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2) x •
toTensor.symm ((basis (Fin.append ![realLorentzTensor.Color.down] c)) b)))
ext b n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:SpaceTime d → Mhf:Differentiable ℝ fx:SpaceTime db:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (tensorDeriv f x))) b =
((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr
(toTensor
(∑ b,
∂_ (CoVector.indexEquiv (ComponentIdx.prod b).1)
(fun x => ((basis c).repr (toTensor (f x))) (ComponentIdx.prod b).2) x •
toTensor.symm ((basis (Fin.append ![realLorentzTensor.Color.down] c)) b))))
b
simp [Finsupp.single_apply, tensorDeriv_toTensor_basis_repr hf] All goals completed! 🐙C.1. Derivatives of tensors for distributions
The derivative of a tensor, as a tensor for distributions.
def distTensorDeriv {M d} [NormedAddCommGroup M]
[InnerProductSpace ℝ M] [FiniteDimensional ℝ M] :
((SpaceTime d) →d[ℝ] M) →ₗ[ℝ] ((SpaceTime d) →d[ℝ] Lorentz.CoVector d ⊗[ℝ] M) where
toFun f := {
toFun ε := ∑ μ, (Lorentz.CoVector.basis μ) ⊗ₜ distDeriv μ f ε
map_add' ε1 ε2 := by n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mε1:𝓢(SpaceTime d, ℝ)ε2:𝓢(SpaceTime d, ℝ)⊢ ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) (ε1 + ε2) =
∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε1 + ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε2
simp [← Finset.sum_add_distrib, tmul_add] All goals completed! 🐙
map_smul' a ε := by n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Ma:ℝε:𝓢(SpaceTime d, ℝ)⊢ ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) (a • ε) =
(RingHom.id ℝ) a • ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε
simp [← Finset.smul_sum, tmul_smul] All goals completed! 🐙
cont := by n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] M⊢ Continuous fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε
refine continuous_finsetSum Finset.univ (fun μ _ => ?_) n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ Continuous fun ε => CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε
refine Continuous.comp' ?_ ?_ refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ Continuous (tmul ℝ (CoVector.basis μ))refine_2 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ Continuous ⇑((distDeriv μ) f)
· refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ Continuous (tmul ℝ (CoVector.basis μ)) change Continuous (fun y => (Lorentz.CoVector.basis μ) ⊗ₜ y) refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y
obtain ⟨w,b,hb1⟩ := exists_orthonormalBasis ℝ M refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.val⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y
have h1 : ∀ (y : M), (Lorentz.CoVector.basis μ) ⊗ₜ y =
∑ i, ⟪b i, y⟫_ℝ • ((Lorentz.CoVector.basis μ) ⊗ₜ[ℝ] (b i)) := by n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] M⊢ Continuous fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y
intro y n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valy:M⊢ CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y
conv_lhs => rw [← OrthonormalBasis.sum_repr' b y] n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valy:M| CoVector.basis μ ⊗ₜ[ℝ] ∑ i, ⟪b i, y⟫_ℝ • b irefine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y
simp [tmul_sum]refine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] yrefine_1 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i⊢ Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y
conv => n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i| Continuous fun y => CoVector.basis μ ⊗ₜ[ℝ] y enter [1, y] n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b iy:M| CoVector.basis μ ⊗ₜ[ℝ] y; rw [h1] n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univw:Finset Mb:OrthonormalBasis ↥w ℝ Mhb1:⇑b = Subtype.valh1:∀ (y : M), CoVector.basis μ ⊗ₜ[ℝ] y = ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b iy:M| ∑ i, ⟪b i, y⟫_ℝ • CoVector.basis μ ⊗ₜ[ℝ] b i
fun_prop All goals completed! 🐙
· refine_2 n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ Continuous ⇑((distDeriv μ) f) fun_prop All goals completed! 🐙
}
map_add' f1 f2 := by n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] M⊢ { toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (f1 + f2)) ε, map_add' := ⋯, map_smul' := ⋯,
cont := ⋯ } =
{ toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f1) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ } +
{ toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f2) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ }
ext ε n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)⊢ { toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (f1 + f2)) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ }
ε =
({ toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f1) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ } +
{ toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f2) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ })
ε
simp [tmul_add, Finset.sum_add_distrib] All goals completed! 🐙
map_smul' a f := by n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Ma:ℝf:(SpaceTime d)→d[ℝ] M⊢ { toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (a • f)) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ } =
(RingHom.id ℝ) a •
{ toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ }
ext ε n:ℕd✝:ℕM✝¹:Typeinst✝⁹:AddCommGroup M✝¹inst✝⁸:Module ℝ M✝¹inst✝⁷:TopologicalSpace M✝¹c:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁶:NormedAddCommGroup M✝inst✝⁵:NormedSpace ℝ M✝inst✝⁴:(realLorentzTensor d✝).Tensorial c M✝inst✝³:T2Space M✝M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Ma:ℝf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)⊢ { toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (a • f)) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ }
ε =
((RingHom.id ℝ) a •
{ toFun := fun ε => ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ })
ε
simp [tmul_smul, Finset.smul_sum] All goals completed! 🐙lemma distTensorDeriv_apply {M d} [NormedAddCommGroup M]
[InnerProductSpace ℝ M] [FiniteDimensional ℝ M] (f : (SpaceTime d) →d[ℝ] M)
(ε : 𝓢(SpaceTime d, ℝ)) :
distTensorDeriv f ε = ∑ μ, (Lorentz.CoVector.basis μ) ⊗ₜ distDeriv μ f ε := by M:Typed:ℕinst✝²:NormedAddCommGroup Minst✝¹:InnerProductSpace ℝ Minst✝:FiniteDimensional ℝ Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)⊢ (distTensorDeriv f) ε = ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε
simp [distTensorDeriv] All goals completed! 🐙
lemma distTensorDeriv_equivariant {M : Type} [NormedAddCommGroup M]
[InnerProductSpace ℝ M] [FiniteDimensional ℝ M] [(realLorentzTensor d).Tensorial c M]
(f : (SpaceTime d) →d[ℝ] M) (Λ : LorentzGroup d) :
distTensorDeriv (Λ • f) = Λ • distTensorDeriv f := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)⊢ distTensorDeriv (Λ • f) = Λ • distTensorDeriv f
ext ε n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (distTensorDeriv (Λ • f)) ε = (Λ • distTensorDeriv f) ε
rw [distTensorDeriv_apply n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (Λ • f)) ε = (Λ • distTensorDeriv f) ε n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (Λ • f)) ε = (Λ • distTensorDeriv f) ε] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (Λ • f)) ε = (Λ • distTensorDeriv f) ε
conv_lhs =>
enter [2, μ] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d| CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) (Λ • f)) ε
rw [distDeriv_comp_lorentz_action] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d| CoVector.basis μ ⊗ₜ[ℝ] (∑ ν, ↑Λ⁻¹ ν μ • Λ • (distDeriv ν) f) ε
simp only [FunLike.coe_sum, FunLike.coe_smul, Finset.sum_apply,
Pi.smul_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d| CoVector.basis μ ⊗ₜ[ℝ] ∑ x, ↑Λ⁻¹ x μ • (Λ • (distDeriv x) f) ε
rw [tmul_sum] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d| ∑ a, CoVector.basis μ ⊗ₜ[ℝ] (↑Λ⁻¹ a μ • (Λ • (distDeriv a) f) ε)
enter [2, ν] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| CoVector.basis μ ⊗ₜ[ℝ] (↑Λ⁻¹ ν μ • (Λ • (distDeriv ν) f) ε)
rw [← smul_tmul, lorentzGroup_smul_dist_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| (↑Λ⁻¹ ν μ • CoVector.basis μ) ⊗ₜ[ℝ] (Λ • ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε))
rw [Finset.sum_comm n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ y, ∑ x, (↑Λ⁻¹ y x • CoVector.basis x) ⊗ₜ[ℝ] (Λ • ((distDeriv y) f) ((schwartzAction Λ⁻¹) ε)) =
(Λ • distTensorDeriv f) ε n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ y, ∑ x, (↑Λ⁻¹ y x • CoVector.basis x) ⊗ₜ[ℝ] (Λ • ((distDeriv y) f) ((schwartzAction Λ⁻¹) ε)) =
(Λ • distTensorDeriv f) ε] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ y, ∑ x, (↑Λ⁻¹ y x • CoVector.basis x) ⊗ₜ[ℝ] (Λ • ((distDeriv y) f) ((schwartzAction Λ⁻¹) ε)) =
(Λ • distTensorDeriv f) ε
conv_lhs =>
enter [2, ν] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ν:Fin 1 ⊕ Fin d| ∑ x, (↑Λ⁻¹ ν x • CoVector.basis x) ⊗ₜ[ℝ] (Λ • ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε))
rw [← sum_tmul, ← Lorentz.CoVector.smul_basis, ← Tensorial.smul_prod] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ν:Fin 1 ⊕ Fin d| Λ • CoVector.basis ν ⊗ₜ[ℝ] ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε)
change _ = (TensorSpecies.Tensorial.smulLinearMap Λ) _ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, Λ • CoVector.basis ν ⊗ₜ[ℝ] ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε) =
(smulLinearMap Λ) (↑(distTensorDeriv f ∘SL schwartzAction Λ⁻¹) ε)
simp only [Nat.succ_eq_add_one, Nat.reduceAdd, ContinuousLinearMap.coe_comp,
ContinuousLinearMap.coe_coe, Function.comp_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, Λ • CoVector.basis ν ⊗ₜ[ℝ] ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε) =
(smulLinearMap Λ) ((distTensorDeriv f) ((schwartzAction Λ⁻¹) ε))
rw [distTensorDeriv_apply n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, Λ • CoVector.basis ν ⊗ₜ[ℝ] ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε) =
(smulLinearMap Λ) (∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ((schwartzAction Λ⁻¹) ε)) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, Λ • CoVector.basis ν ⊗ₜ[ℝ] ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε) =
(smulLinearMap Λ) (∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ((schwartzAction Λ⁻¹) ε))] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] MΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ ∑ ν, Λ • CoVector.basis ν ⊗ₜ[ℝ] ((distDeriv ν) f) ((schwartzAction Λ⁻¹) ε) =
(smulLinearMap Λ) (∑ μ, CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ((schwartzAction Λ⁻¹) ε))
simp [TensorSpecies.Tensorial.smulLinearMap_apply, map_sum] All goals completed! 🐙
lemma distTensorDeriv_toTensor_basis_repr {M : Type} [NormedAddCommGroup M]
[InnerProductSpace ℝ M] [FiniteDimensional ℝ M] [(realLorentzTensor d).Tensorial c M]
{f : (SpaceTime d) →d[ℝ] M}
(ε : 𝓢(SpaceTime d, ℝ))
(b : Tensor.ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)) :
(Tensor.basis _).repr (Tensorial.toTensor (distTensorDeriv f ε)) b =
(Tensor.basis _).repr (Tensorial.toTensor
(distDeriv (Lorentz.CoVector.indexEquiv (ComponentIdx.prod b).1) f ε))
(ComponentIdx.prod b).2 := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor ((distTensorDeriv f) ε))) b =
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε))) (ComponentIdx.prod b).2
simp [distTensorDeriv] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∑ c_1,
((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr
(toTensor (CoVector.basis c_1 ⊗ₜ[ℝ] ((distDeriv c_1) f) ε)))
b =
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε))) (ComponentIdx.prod b).2
conv_lhs =>
enter [2, μ] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d| ((basis (Fin.append ![realLorentzTensor.Color.down] c)).repr (toTensor (CoVector.basis μ ⊗ₜ[ℝ] ((distDeriv μ) f) ε))) b
rw [Tensorial.toTensor_tprod, Tensor.prodT_basis_repr_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d| ((basis ![realLorentzTensor.Color.down]).repr (toTensor (CoVector.basis μ))) (ComponentIdx.prod b).1 *
((basis c).repr (toTensor (((distDeriv μ) f) ε))) (ComponentIdx.prod b).2
simp [Lorentz.CoVector.toTensor_basis_eq_tensor_basis, Finsupp.single_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)μ:Fin 1 ⊕ Fin d| if CoVector.indexEquiv.symm μ = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv μ) f) ε))) (ComponentIdx.prod b).2
else 0
rw [Finset.sum_eq_single (Lorentz.CoVector.indexEquiv (ComponentIdx.prod b).1) n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε))) (ComponentIdx.prod b).2h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv b_1) f) ε))) (ComponentIdx.prod b).2
else 0) =
0h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
0 n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε))) (ComponentIdx.prod b).2h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv b_1) f) ε))) (ComponentIdx.prod b).2
else 0) =
0h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
0] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε))) (ComponentIdx.prod b).2h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv b_1) f) ε))) (ComponentIdx.prod b).2
else 0) =
0h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
0
· n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ (if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε))) (ComponentIdx.prod b).2 simp All goals completed! 🐙
· h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ ∀ b_1 ∈ Finset.univ,
b_1 ≠ CoVector.indexEquiv (ComponentIdx.prod b).1 →
(if CoVector.indexEquiv.symm b_1 = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv b_1) f) ε))) (ComponentIdx.prod b).2
else 0) =
0 intro b' _ hb h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)b':Fin 1 ⊕ Fin da✝:b' ∈ Finset.univhb:b' ≠ CoVector.indexEquiv (ComponentIdx.prod b).1⊢ (if CoVector.indexEquiv.symm b' = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv b') f) ε))) (ComponentIdx.prod b).2
else 0) =
0
simp only [ite_eq_right_iff] h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)b':Fin 1 ⊕ Fin da✝:b' ∈ Finset.univhb:b' ≠ CoVector.indexEquiv (ComponentIdx.prod b).1⊢ CoVector.indexEquiv.symm b' = (ComponentIdx.prod b).1 →
((basis c).repr (toTensor (((distDeriv b') f) ε))) (ComponentIdx.prod b).2 = 0
intro hx h₀ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)b':Fin 1 ⊕ Fin da✝:b' ∈ Finset.univhb:b' ≠ CoVector.indexEquiv (ComponentIdx.prod b).1hx:CoVector.indexEquiv.symm b' = (ComponentIdx.prod b).1⊢ ((basis c).repr (toTensor (((distDeriv b') f) ε))) (ComponentIdx.prod b).2 = 0
exact absurd (CoVector.indexEquiv.symm_apply_eq.mp hx) hb All goals completed! 🐙
· h₁ n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:InnerProductSpace ℝ Minst✝¹:FiniteDimensional ℝ Minst✝:(realLorentzTensor d).Tensorial c Mf:(SpaceTime d)→d[ℝ] Mε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![realLorentzTensor.Color.down] c)⊢ CoVector.indexEquiv (ComponentIdx.prod b).1 ∉ Finset.univ →
(if CoVector.indexEquiv.symm (CoVector.indexEquiv (ComponentIdx.prod b).1) = (ComponentIdx.prod b).1 then
((basis c).repr (toTensor (((distDeriv (CoVector.indexEquiv (ComponentIdx.prod b).1)) f) ε)))
(ComponentIdx.prod b).2
else 0) =
0 simp All goals completed! 🐙