Imports
/-
Copyright (c) 2025 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.Electromagnetism.Distributional.Basic
public import Physlib.Relativity.Tensors.RealTensor.Metrics.Basic
public import Mathlib.Algebra.Order.Archimedean.Real.HomThe Field Strength Tensor
i. Overview
In this module we define the field strength tensor in terms of the electromagnetic potential.
ii. Key results
DistElectromagneticPotential.fieldStrength : The field strength for
electromagnetic potentials which are distributions.
iii. Table of contents
A. Field strength for distributions
A.1. Auxiliary definition of field strength for distributions, with no linearity
A.2. The definition of the field strength
A.3. Field strength written in terms of a basis
A.4. Equivariance of the field strength for distributions
iv. References
@[expose] public sectionA. Field strength for distributions
attribute [-simp] Fintype.sum_sum_typeattribute [-simp] Nat.succ_eq_add_oneA.1. Auxiliary definition of field strength for distributions, with no linearity
hy d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ -Tensorial.toTensor.symm
((permT (![1, 0] ∘ id) ⋯)
((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))) =
-Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))))
rfl All goals completed! 🐙
lemma toTensor_fieldStrengthAux {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) :
Tensorial.toTensor (fieldStrengthAux A ε) =
(permT id (IsReindexing.auto) {(η d | μ μ' ⊗ distTensorDeriv A ε | μ' ν)}ᵀ)
- (permT ![1, 0] (IsReindexing.auto)
{(η d | μ μ' ⊗ distTensorDeriv A ε | μ' ν)}ᵀ) := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor (A.fieldStrengthAux ε) =
(permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
rw [fieldStrengthAux_eq_add d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))))) =
(permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))))) =
(permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))))) =
(permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
simp All goals completed! 🐙
lemma toTensor_fieldStrengthAux_basis_repr {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ))
(b : ComponentIdx (S := realLorentzTensor d) (Fin.append ![Color.up] ![Color.up])) :
(Tensor.basis _).repr (Tensorial.toTensor (fieldStrengthAux A ε)) b =
∑ κ, (η (b 0) κ * SpaceTime.distDeriv κ A ε (b 1) -
η (b 1) κ * SpaceTime.distDeriv κ A ε (b 0)) := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))
rw [toTensor_fieldStrengthAux d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))) -
(permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))
simp only [map_sub, Finsupp.coe_sub, Pi.sub_apply] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b -
((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))
rw [Tensor.permT_basis_repr_symm_apply, d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]) ∘ Fin.succSuccAbove 1 2)).repr
((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))))
fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) -
((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) (x, x)) -
((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) contrT_basis_repr_apply_eq_fin d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) (x, x)) -
((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) (x, x)) -
((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) (x, x)) -
((basis (Fin.append ![Color.up] ![Color.up])).repr
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))))
b =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))
conv_lhs =>
enter [1, 2, n] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) (n, n))
rw [Tensor.prodT_basis_repr_apply, contrMetric_repr_apply_eq_minkowskiMatrix] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| η
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).1
0)
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).1
1) *
((basis (Fin.append ![Color.down] ![Color.up])).repr (Tensorial.toTensor ((distTensorDeriv A) ε)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).2
enter [1] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| η
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).1
0)
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).1
1)
change η (b 0) n d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| η (b 0) n
conv_lhs =>
enter [1, 2, n, 2] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.down] ![Color.up])).repr (Tensorial.toTensor ((distTensorDeriv A) ε)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i))) (n, n))).2
rw [toTensor_distTensorDeriv_basis_repr_apply] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((distDeriv
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).2
0))
A)
ε
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv id ⋯ i)))
(n, n))).2
1)
change distDeriv n A ε (b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((distDeriv n) A) ε (b 1)
rw [Tensor.permT_basis_repr_symm_apply, d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (∑ n, η (b 0) n * ((distDeriv n) A) ε (b 1) -
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]) ∘ Fin.succSuccAbove 1 2)).repr
((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε)))))
fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i))) =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ n, η (b 0) n * ((distDeriv n) A) ε (b 1) -
∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(x, x)) =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) contrT_basis_repr_apply_eq_fin d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ n, η (b 0) n * ((distDeriv n) A) ε (b 1) -
∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(x, x)) =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ n, η (b 0) n * ((distDeriv n) A) ε (b 1) -
∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(x, x)) =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ n, η (b 0) n * ((distDeriv n) A) ε (b 1) -
∑ x,
((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(x, x)) =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0))
conv_lhs =>
enter [2, 2, n] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.up, Color.up] (Fin.append ![Color.down] ![Color.up]))).repr
((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i))) (n, n))
rw [Tensor.prodT_basis_repr_apply, contrMetric_repr_apply_eq_minkowskiMatrix] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| η
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).1
0)
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).1
1) *
((basis (Fin.append ![Color.down] ![Color.up])).repr (Tensorial.toTensor ((distTensorDeriv A) ε)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).2
enter [1] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| η
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).1
0)
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).1
1)
change η (b 1) n d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| η (b 1) n
conv_lhs =>
enter [2, 2, n, 2] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.down] ![Color.up])).repr (Tensorial.toTensor ((distTensorDeriv A) ε)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).2
rw [toTensor_distTensorDeriv_basis_repr_apply] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((distDeriv
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).2
0))
A)
ε
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i => (basisIdxCongr ⋯) (b (IsReindexing.inv ![1, 0] ⋯ i)))
(n, n))).2
1)
change distDeriv n A ε (b 0) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])n:Fin 1 ⊕ Fin d| ((distDeriv n) A) ε (b 0)
rw [← Finset.sum_sub_distrib d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ∑ x, (η (b 0) x * ((distDeriv x) A) ε (b 1) - η (b 1) x * ((distDeriv x) A) ε (b 0)) =
∑ κ, (η (b 0) κ * ((distDeriv κ) A) ε (b 1) - η (b 1) κ * ((distDeriv κ) A) ε (b 0)) All goals completed! 🐙] All goals completed! 🐙
lemma fieldStrengthAux_tensor_basis_eq_basis {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ))
(b : ComponentIdx (S := realLorentzTensor d) (Fin.append ![Color.up] ![Color.up])) :
(Tensor.basis _).repr (Tensorial.toTensor (A.fieldStrengthAux ε)) b =
(Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.fieldStrengthAux ε)
(b 0, b 1) := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
rw [Tensorial.basis_toTensor_apply d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((basis (Fin.append ![Color.up] ![Color.up])).map Tensorial.toTensor.symm).repr (A.fieldStrengthAux ε)) b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((basis (Fin.append ![Color.up] ![Color.up])).map Tensorial.toTensor.symm).repr (A.fieldStrengthAux ε)) b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((basis (Fin.append ![Color.up] ![Color.up])).map Tensorial.toTensor.symm).repr (A.fieldStrengthAux ε)) b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
rw [Tensorial.basis_map_prod d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((((basis ![Color.up]).map Tensorial.toTensor.symm).tensorProduct
((basis ![Color.up]).map Tensorial.toTensor.symm)).reindex
ComponentIdx.prod.symm).repr
(A.fieldStrengthAux ε))
b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((((basis ![Color.up]).map Tensorial.toTensor.symm).tensorProduct
((basis ![Color.up]).map Tensorial.toTensor.symm)).reindex
ComponentIdx.prod.symm).repr
(A.fieldStrengthAux ε))
b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((((basis ![Color.up]).map Tensorial.toTensor.symm).tensorProduct
((basis ![Color.up]).map Tensorial.toTensor.symm)).reindex
ComponentIdx.prod.symm).repr
(A.fieldStrengthAux ε))
b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
simp only [Nat.reduceSucc, Nat.reduceAdd, Basis.repr_reindex, Finsupp.mapDomain_equiv_apply,
Equiv.symm_symm, Fin.isValue] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((((basis ![Color.up]).map Tensorial.toTensor.symm).tensorProduct
((basis ![Color.up]).map Tensorial.toTensor.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
rw [Lorentz.Vector.tensor_basis_map_eq_basis_reindex d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
have hb : (((Lorentz.Vector.basis (d := d)).reindex Lorentz.Vector.indexEquiv.symm).tensorProduct
(Lorentz.Vector.basis.reindex Lorentz.Vector.indexEquiv.symm)) =
((Lorentz.Vector.basis (d := d)).tensorProduct (Lorentz.Vector.basis (d := d))).reindex
(Lorentz.Vector.indexEquiv.symm.prodCongr Lorentz.Vector.indexEquiv.symm) := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])⊢ ((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) b =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
ext b d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b✝:ComponentIdx (Fin.append ![Color.up] ![Color.up])b:ComponentIdx ![Color.up] × ComponentIdx ![Color.up]⊢ ((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)) b =
((Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)) b d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
match b with
| ⟨i, j⟩ => d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b✝:ComponentIdx (Fin.append ![Color.up] ![Color.up])b:ComponentIdx ![Color.up] × ComponentIdx ![Color.up]i:ComponentIdx ![Color.up]j:ComponentIdx ![Color.up]⊢ ((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)) (i, j) =
((Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)) (i, j) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
simp d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
rw [hb d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ (((Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)).repr
(A.fieldStrengthAux ε))
(ComponentIdx.prod b) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
rw [Module.Basis.repr_reindex_apply d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε))
((Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm).symm (ComponentIdx.prod b)) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε))
((Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm).symm (ComponentIdx.prod b)) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:ComponentIdx (Fin.append ![Color.up] ![Color.up])hb:(Vector.basis.reindex Vector.indexEquiv.symm).tensorProduct (Vector.basis.reindex Vector.indexEquiv.symm) =
(Vector.basis.tensorProduct Vector.basis).reindex (Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm)⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε))
((Vector.indexEquiv.symm.prodCongr Vector.indexEquiv.symm).symm (ComponentIdx.prod b)) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (b 0, b 1)
congr 1 All goals completed! 🐙
lemma fieldStrengthAux_basis_repr_apply {d} {μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)}
(A : DistElectromagneticPotential d) (ε : 𝓢(SpaceTime d, ℝ)) :
(Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.fieldStrengthAux ε) μν =
∑ κ, ((η μν.1 κ * distDeriv κ A ε μν.2) - η μν.2 κ * distDeriv κ A ε μν.1) := by d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) μν =
∑ κ, (η μν.1 κ * ((distDeriv κ) A) ε μν.2 - η μν.2 κ * ((distDeriv κ) A) ε μν.1)
match μν with
| (μ, ν) => d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
∑ κ, (η (μ, ν).1 κ * ((distDeriv κ) A) ε (μ, ν).2 - η (μ, ν).2 κ * ((distDeriv κ) A) ε (μ, ν).1)
trans (Tensor.basis _).repr (Tensorial.toTensor (A.fieldStrengthAux ε))
(fun | 0 => μ | 1 => ν) d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) fun x =>
match x with
| 0 => μ
| 1 => νd:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ (((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) fun x =>
match x with
| 0 => μ
| 1 => ν) =
∑ κ, (η (μ, ν).1 κ * ((distDeriv κ) A) ε (μ, ν).2 - η (μ, ν).2 κ * ((distDeriv κ) A) ε (μ, ν).1); swap d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ (((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) fun x =>
match x with
| 0 => μ
| 1 => ν) =
∑ κ, (η (μ, ν).1 κ * ((distDeriv κ) A) ε (μ, ν).2 - η (μ, ν).2 κ * ((distDeriv κ) A) ε (μ, ν).1)d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) fun x =>
match x with
| 0 => μ
| 1 => ν
· d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ (((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.fieldStrengthAux ε))) fun x =>
match x with
| 0 => μ
| 1 => ν) =
∑ κ, (η (μ, ν).1 κ * ((distDeriv κ) A) ε (μ, ν).2 - η (μ, ν).2 κ * ((distDeriv κ) A) ε (μ, ν).1) rw [toTensor_fieldStrengthAux_basis_repr d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ∑ κ,
(η
(match 0 with
| 0 => μ
| 1 => ν)
κ *
((distDeriv κ) A) ε
(match 1 with
| 0 => μ
| 1 => ν) -
η
(match 1 with
| 0 => μ
| 1 => ν)
κ *
((distDeriv κ) A) ε
(match 0 with
| 0 => μ
| 1 => ν)) =
∑ κ, (η (μ, ν).1 κ * ((distDeriv κ) A) ε (μ, ν).2 - η (μ, ν).2 κ * ((distDeriv κ) A) ε (μ, ν).1) All goals completed! 🐙] All goals completed! 🐙
rw [fieldStrengthAux_tensor_basis_eq_basis d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε))
(match 0 with
| 0 => μ
| 1 => ν,
match 1 with
| 0 => μ
| 1 => ν) All goals completed! 🐙] All goals completed! 🐙
lemma fieldStrengthAux_basis_repr_apply_eq_single {d} {μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)}
(A : DistElectromagneticPotential d) (ε : 𝓢(SpaceTime d, ℝ)) :
(Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.fieldStrengthAux ε) μν =
((η μν.1 μν.1 * distDeriv μν.1 A ε μν.2) - η μν.2 μν.2 * distDeriv μν.2 A ε μν.1) := by d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) μν =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1
rw [fieldStrengthAux_basis_repr_apply d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∑ κ, (η μν.1 κ * ((distDeriv κ) A) ε μν.2 - η μν.2 κ * ((distDeriv κ) A) ε μν.1) =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∑ κ, (η μν.1 κ * ((distDeriv κ) A) ε μν.2 - η μν.2 κ * ((distDeriv κ) A) ε μν.1) =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1] d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∑ κ, (η μν.1 κ * ((distDeriv κ) A) ε μν.2 - η μν.2 κ * ((distDeriv κ) A) ε μν.1) =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1
simp only [Finset.sum_sub_distrib] d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∑ x, η μν.1 x * ((distDeriv x) A) ε μν.2 - ∑ x, η μν.2 x * ((distDeriv x) A) ε μν.1 =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1
rw [Finset.sum_eq_single μν.1, d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - ∑ x, η μν.2 x * ((distDeriv x) A) ε μν.1 =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.1 → η μν.1 b * ((distDeriv b) A) ε μν.2 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.1 ∉ Finset.univ → η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 = 0 h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.2 → η μν.2 b * ((distDeriv b) A) ε μν.1 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.2 ∉ Finset.univ → η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.1 → η μν.1 b * ((distDeriv b) A) ε μν.2 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.1 ∉ Finset.univ → η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 = 0 Finset.sum_eq_single μν.2 d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.2 → η μν.2 b * ((distDeriv b) A) ε μν.1 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.2 ∉ Finset.univ → η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.1 → η μν.1 b * ((distDeriv b) A) ε μν.2 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.1 ∉ Finset.univ → η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.2 → η μν.2 b * ((distDeriv b) A) ε μν.1 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.2 ∉ Finset.univ → η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.1 → η μν.1 b * ((distDeriv b) A) ε μν.2 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.1 ∉ Finset.univ → η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 = 0]h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.2 → η μν.2 b * ((distDeriv b) A) ε μν.1 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.2 ∉ Finset.univ → η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.1 → η μν.1 b * ((distDeriv b) A) ε μν.2 = 0h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.1 ∉ Finset.univ → η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 = 0
· h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.2 → η μν.2 b * ((distDeriv b) A) ε μν.1 = 0 intro b _ hb h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ η μν.2 b * ((distDeriv b) A) ε μν.1 = 0
rw [minkowskiMatrix.off_diag_zero h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ 0 * ((distDeriv b) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ μν.2 ≠ b h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ 0 * ((distDeriv b) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ μν.2 ≠ b]h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ 0 * ((distDeriv b) A) ε μν.1 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ μν.2 ≠ b
simp only [zero_mul] h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.2⊢ μν.2 ≠ b
exact id (Ne.symm hb) All goals completed! 🐙
· h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.2 ∉ Finset.univ → η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 = 0 simp All goals completed! 🐙
· h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ∀ b ∈ Finset.univ, b ≠ μν.1 → η μν.1 b * ((distDeriv b) A) ε μν.2 = 0 intro b _ hb h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ η μν.1 b * ((distDeriv b) A) ε μν.2 = 0
rw [minkowskiMatrix.off_diag_zero h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ 0 * ((distDeriv b) A) ε μν.2 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ μν.1 ≠ b h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ 0 * ((distDeriv b) A) ε μν.2 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ μν.1 ≠ b]h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ 0 * ((distDeriv b) A) ε μν.2 = 0h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ μν.1 ≠ b
simp only [zero_mul] h₀ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:Fin 1 ⊕ Fin da✝:b ∈ Finset.univhb:b ≠ μν.1⊢ μν.1 ≠ b
exact id (Ne.symm hb) All goals completed! 🐙
· h₁ d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ μν.1 ∉ Finset.univ → η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 = 0 simp All goals completed! 🐙
lemma fieldStrengthAux_eq_basis {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) :
(A.fieldStrengthAux ε) = ∑ μ, ∑ ν,
((η μ μ * distDeriv μ A ε ν) - η ν ν * distDeriv ν A ε μ)
• Lorentz.Vector.basis μ ⊗ₜ[ℝ] Lorentz.Vector.basis ν := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ A.fieldStrengthAux ε =
∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν
apply (Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr.injective d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ (Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε) =
(Vector.basis.tensorProduct Vector.basis).repr
(∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν)
ext b d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) b =
((Vector.basis.tensorProduct Vector.basis).repr
(∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν))
b
match b with
| (μ, ν) => d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
((Vector.basis.tensorProduct Vector.basis).repr
(∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν))
(μ, ν)
simp [map_sum, map_smul, Finsupp.coe_finsetSum, Finsupp.coe_smul, Finset.sum_apply,
Pi.smul_apply, Basis.tensorProduct_repr_tmul_apply, Basis.repr_self, smul_eq_mul] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
∑ x,
∑ x_1,
(η x x * ((distDeriv x) A) ε x_1 - η x_1 x_1 * ((distDeriv x_1) A) ε x) *
((Finsupp.single x_1 1) ν * (Finsupp.single x 1) μ)
simp [Finsupp.single_apply] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (A.fieldStrengthAux ε)) (μ, ν) =
η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ
rw [fieldStrengthAux_basis_repr_apply_eq_single d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)b:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ η (μ, ν).1 (μ, ν).1 * ((distDeriv (μ, ν).1) A) ε (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ((distDeriv (μ, ν).2) A) ε (μ, ν).1 =
η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ All goals completed! 🐙] All goals completed! 🐙A.2. The definition of the field strength
lemma fieldStrength_eq_fieldStrengthAux {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) :
A.fieldStrength ε = A.fieldStrengthAux ε := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ (fieldStrength A) ε = A.fieldStrengthAux ε rfl All goals completed! 🐙A.3. Field strength written in terms of a basis
lemma fieldStrength_eq_basis {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) :
A.fieldStrength ε = ∑ μ, ∑ ν,
((η μ μ * distDeriv μ A ε ν) - η ν ν * distDeriv ν A ε μ)
• Lorentz.Vector.basis μ ⊗ₜ[ℝ] Lorentz.Vector.basis ν := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ (fieldStrength A) ε =
∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν
rw [fieldStrength d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ({ toFun := fun A => { toFun := fun ε => A.fieldStrengthAux ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ },
map_add' := ⋯, map_smul' := ⋯ }
A)
ε =
∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ({ toFun := fun A => { toFun := fun ε => A.fieldStrengthAux ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ },
map_add' := ⋯, map_smul' := ⋯ }
A)
ε =
∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ({ toFun := fun A => { toFun := fun ε => A.fieldStrengthAux ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ },
map_add' := ⋯, map_smul' := ⋯ }
A)
ε =
∑ μ, ∑ ν, (η μ μ * ((distDeriv μ) A) ε ν - η ν ν * ((distDeriv ν) A) ε μ) • Vector.basis μ ⊗ₜ[ℝ] Vector.basis ν
exact fieldStrengthAux_eq_basis A ε All goals completed! 🐙
lemma fieldStrength_basis_repr_eq_single {d} {μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)}
(A : DistElectromagneticPotential d) (ε : 𝓢(SpaceTime d, ℝ)) :
(Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.fieldStrength ε) μν =
((η μν.1 μν.1 * distDeriv μν.1 A ε μν.2) - η μν.2 μν.2 * distDeriv μν.2 A ε μν.1) := by d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ((Vector.basis.tensorProduct Vector.basis).repr ((fieldStrength A) ε)) μν =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1
rw [fieldStrength d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ((Vector.basis.tensorProduct Vector.basis).repr
(({ toFun := fun A => { toFun := fun ε => A.fieldStrengthAux ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ },
map_add' := ⋯, map_smul' := ⋯ }
A)
ε))
μν =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1 d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ((Vector.basis.tensorProduct Vector.basis).repr
(({ toFun := fun A => { toFun := fun ε => A.fieldStrengthAux ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ },
map_add' := ⋯, map_smul' := ⋯ }
A)
ε))
μν =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1] d:ℕμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)⊢ ((Vector.basis.tensorProduct Vector.basis).repr
(({ toFun := fun A => { toFun := fun ε => A.fieldStrengthAux ε, map_add' := ⋯, map_smul' := ⋯, cont := ⋯ },
map_add' := ⋯, map_smul' := ⋯ }
A)
ε))
μν =
η μν.1 μν.1 * ((distDeriv μν.1) A) ε μν.2 - η μν.2 μν.2 * ((distDeriv μν.2) A) ε μν.1
exact fieldStrengthAux_basis_repr_apply_eq_single A ε All goals completed! 🐙
@[simp]
lemma fieldStrength_diag_zero {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) (μ : Fin 1 ⊕ Fin d) :
(Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.fieldStrength ε) (μ, μ) = 0 := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr ((fieldStrength A) ε)) (μ, μ) = 0
rw [fieldStrength_basis_repr_eq_single d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d⊢ η (μ, μ).1 (μ, μ).1 * ((distDeriv (μ, μ).1) A) ε (μ, μ).2 - η (μ, μ).2 (μ, μ).2 * ((distDeriv (μ, μ).2) A) ε (μ, μ).1 =
0 d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d⊢ η (μ, μ).1 (μ, μ).1 * ((distDeriv (μ, μ).1) A) ε (μ, μ).2 - η (μ, μ).2 (μ, μ).2 * ((distDeriv (μ, μ).2) A) ε (μ, μ).1 =
0] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin d⊢ η (μ, μ).1 (μ, μ).1 * ((distDeriv (μ, μ).1) A) ε (μ, μ).2 - η (μ, μ).2 (μ, μ).2 * ((distDeriv (μ, μ).2) A) ε (μ, μ).1 =
0
simp All goals completed! 🐙
@[simp]
lemma distDeriv_fieldStrength_diag_zero {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) (μ ν : Fin 1 ⊕ Fin d) :
(Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr
(distDeriv ν A.fieldStrength ε) (μ, μ) = 0 := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr (((distDeriv ν) (fieldStrength A)) ε)) (μ, μ) = 0
rw [SpaceTime.distDeriv_apply' d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr
(-(fieldStrength A) ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Vector.basis ν)) ((fderivCLM ℝ (SpaceTime d) ℝ) ε))))
(μ, μ) =
0 d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr
(-(fieldStrength A) ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Vector.basis ν)) ((fderivCLM ℝ (SpaceTime d) ℝ) ε))))
(μ, μ) =
0] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr
(-(fieldStrength A) ((SchwartzMap.evalCLM ℝ (SpaceTime d) ℝ (Vector.basis ν)) ((fderivCLM ℝ (SpaceTime d) ℝ) ε))))
(μ, μ) =
0
simp All goals completed! 🐙
lemma fieldStrength_antisymmetric_basis {d} (A : DistElectromagneticPotential d)
(ε : 𝓢(SpaceTime d, ℝ)) (μ ν : Fin 1 ⊕ Fin d) :
(Vector.basis.tensorProduct Vector.basis).repr
(A.fieldStrength ε) (μ, ν) = - (Vector.basis.tensorProduct Vector.basis).repr
(A.fieldStrength ε) (ν, μ) := by d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ((Vector.basis.tensorProduct Vector.basis).repr ((fieldStrength A) ε)) (μ, ν) =
-((Vector.basis.tensorProduct Vector.basis).repr ((fieldStrength A) ε)) (ν, μ)
rw [fieldStrength_basis_repr_eq_single, d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ η (μ, ν).1 (μ, ν).1 * ((distDeriv (μ, ν).1) A) ε (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ((distDeriv (μ, ν).2) A) ε (μ, ν).1 =
-((Vector.basis.tensorProduct Vector.basis).repr ((fieldStrength A) ε)) (ν, μ) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ η (μ, ν).1 (μ, ν).1 * ((distDeriv (μ, ν).1) A) ε (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ((distDeriv (μ, ν).2) A) ε (μ, ν).1 =
-(η (ν, μ).1 (ν, μ).1 * ((distDeriv (ν, μ).1) A) ε (ν, μ).2 -
η (ν, μ).2 (ν, μ).2 * ((distDeriv (ν, μ).2) A) ε (ν, μ).1) fieldStrength_basis_repr_eq_single d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ η (μ, ν).1 (μ, ν).1 * ((distDeriv (μ, ν).1) A) ε (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ((distDeriv (μ, ν).2) A) ε (μ, ν).1 =
-(η (ν, μ).1 (ν, μ).1 * ((distDeriv (ν, μ).1) A) ε (ν, μ).2 -
η (ν, μ).2 (ν, μ).2 * ((distDeriv (ν, μ).2) A) ε (ν, μ).1) d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ η (μ, ν).1 (μ, ν).1 * ((distDeriv (μ, ν).1) A) ε (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ((distDeriv (μ, ν).2) A) ε (μ, ν).1 =
-(η (ν, μ).1 (ν, μ).1 * ((distDeriv (ν, μ).1) A) ε (ν, μ).2 -
η (ν, μ).2 (ν, μ).2 * ((distDeriv (ν, μ).2) A) ε (ν, μ).1)] d:ℕA:DistElectromagneticPotential dε:𝓢(SpaceTime d, ℝ)μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ η (μ, ν).1 (μ, ν).1 * ((distDeriv (μ, ν).1) A) ε (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ((distDeriv (μ, ν).2) A) ε (μ, ν).1 =
-(η (ν, μ).1 (ν, μ).1 * ((distDeriv (ν, μ).1) A) ε (ν, μ).2 -
η (ν, μ).2 (ν, μ).2 * ((distDeriv (ν, μ).2) A) ε (ν, μ).1)
ring All goals completed! 🐙A.4. Equivariance of the field strength for distributions
set_option backward.isDefEq.respectTransparency false in
lemma fieldStrength_equivariant {d} (A : DistElectromagneticPotential d)
(Λ : LorentzGroup d) :
(Λ • A).fieldStrength = Λ • A.fieldStrength := by d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)⊢ fieldStrength (Λ • A) = Λ • fieldStrength A
ext ε d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (fieldStrength (Λ • A)) ε = (Λ • fieldStrength A) ε
rw [fieldStrength_eq_fieldStrengthAux, d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (Λ • A).fieldStrengthAux ε = (Λ • fieldStrength A) ε d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (Λ • A).fieldStrengthAux ε = Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) lorentzGroup_smul_dist_apply d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (Λ • A).fieldStrengthAux ε = Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (Λ • A).fieldStrengthAux ε = Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε)] d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ (Λ • A).fieldStrengthAux ε = Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε)
rw [fieldStrengthAux_eq_add, d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv (Λ • A)) ε))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv (Λ • A)) ε))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) distTensorDeriv_equivariant, d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((Λ • distTensorDeriv A) ε))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((Λ • distTensorDeriv A) ε))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) lorentzGroup_smul_dist_apply, d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε)
← actionT_contrMetric Λ d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε) d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε)] d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯)
((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ((schwartzAction Λ⁻¹) ε)))))) =
Λ • (fieldStrength A) ((schwartzAction Λ⁻¹) ε)
generalize ((schwartzAction Λ⁻¹) ε) = ε' d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ε':𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) =
Λ • (fieldStrength A) ε'
rw [fieldStrength_eq_fieldStrengthAux, d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ε':𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) =
Λ • A.fieldStrengthAux ε' d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ε':𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) =
Λ •
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε')))))) fieldStrengthAux_eq_add d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ε':𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) =
Λ •
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε')))))) d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ε':𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) =
Λ •
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε'))))))] d:ℕA:DistElectromagneticPotential dΛ:↑(LorentzGroup d)ε:𝓢(SpaceTime d, ℝ)ε':𝓢(SpaceTime d, ℝ)⊢ Tensorial.toTensor.symm
((permT id ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯)
((contrT 2 1 2 ⋯) ((prodT (Λ • contrMetric d)) (Tensorial.toTensor (Λ • (distTensorDeriv A) ε'))))) =
Λ •
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε'))))) -
Tensorial.toTensor.symm
((permT ![1, 0] ⋯) ((contrT 2 1 2 ⋯) ((prodT (contrMetric d)) (Tensorial.toTensor ((distTensorDeriv A) ε'))))))
simp only [Tensorial.toTensor_smul, prodT_equivariant, contrT_equivariant, permT_equivariant,
← Tensorial.smul_toTensor_symm, smul_sub] All goals completed! 🐙