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.Kinematics.MagneticField
public import Physlib.Electromagnetism.Dynamics.Basic
public import Physlib.Mathematics.VariationalCalculus.HasVarGradientThe kinetic term
i. Overview
The kinetic term of the electromagnetic field is - 1/(4 μ₀) F_μν F^μν.
We define this, show it is invariant under Lorentz transformations,
and show properties of its variational gradient.
In particular the variational gradient gradKineticTerm of the kinetic term
is directly related to Gauss's law and the Ampere law.
In this implementation we have set μ₀ = 1. It is a TODO to introduce this constant.
ii. Key results
ElectromagneticPotential.kineticTerm is the kinetic term of an electromagnetic potential.
ElectromagneticPotential.kineticTerm_equivariant shows that the kinetic term is
Lorentz invariant.
ElectromagneticPotential.gradKineticTerm is the variational gradient of the kinetic term.
ElectromagneticPotential.gradKineticTerm_eq_electric_magnetic gives a first expression for the
variational gradient in terms of the electric and magnetic fields.
iii. Table of contents
A. The kinetic term
A.1. Lorentz invariance of the kinetic term
A.2. Kinetic term simplified expressions
A.3. The kinetic term in terms of the electric and magnetic fields
A.4. The kinetic term in terms of the electric and magnetic matrix
A.5. The kinetic term for constant fields
A.6. Smoothness of the kinetic term
A.7. The kinetic term shifted by time mul a constant
B. Variational gradient of the kinetic term
B.1. Variational gradient in terms of fderiv
B.2. Writing the variational gradient as a sums over double derivatives of the potential
B.3. Variational gradient as a sums over fieldStrengthMatrix
B.4. Variational gradient in terms of the Gauss's and Ampère laws
B.5. Linearity properties of the variational gradient
B.6. HasVarGradientAt for the variational gradient
B.7. Gradient of the kinetic term in terms of the tensor derivative
iv. References
https://quantummechanics.ucsd.edu/ph130a/130_notes/node452.html
@[expose] public sectionattribute [-simp] Fintype.sum_sum_typeattribute [-simp] Nat.succ_eq_add_oneA. The kinetic term
The kinetic term is - 1/(4 μ₀) F_μν F^μν. We define this and show that it is
Lorentz invariant.
A.1. Lorentz invariance of the kinetic term
We show that the kinetic energy is Lorentz invariant.
d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dΛ:↑(LorentzGroup d)hf:Differentiable ℝ A.valx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor ((Λ • A).toFieldStrength x))))))
(Tensorial.toTensor ((Λ • A).toFieldStrength x))))) =
-1 / (4 * 𝓕.μ₀) *
toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength (Λ⁻¹ • x)))))))
(Tensorial.toTensor (A.toFieldStrength (Λ⁻¹ • x))))))
conv_lhs =>
enter [2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dΛ:↑(LorentzGroup d)hf:Differentiable ℝ A.valx:SpaceTime d| toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor ((Λ • A).toFieldStrength x))))))
(Tensorial.toTensor ((Λ • A).toFieldStrength x)))))
rw [toFieldStrength_equivariant A Λ hf, Tensorial.toTensor_smul, ← actionT_coMetric Λ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dΛ:↑(LorentzGroup d)hf:Differentiable ℝ A.valx:SpaceTime d| toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (Λ • coMetric d)) (Λ • coMetric d)))
(Λ • Tensorial.toTensor (A.toFieldStrength (Λ⁻¹ • x)))))))
(Λ • Tensorial.toTensor (A.toFieldStrength (Λ⁻¹ • x))))))
simp only [prodT_equivariant, contrT_equivariant, toField_equivariant] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dΛ:↑(LorentzGroup d)hf:Differentiable ℝ A.valx:SpaceTime d| toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength (Λ⁻¹ • x)))))))
(Tensorial.toTensor (A.toFieldStrength (Λ⁻¹ • x))))))A.2. Kinetic term simplified expressions
lemma kineticTerm_eq_sum {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d) (x : SpaceTime d) :
A.kineticTerm 𝓕 x =
- 1/(4 * 𝓕.μ₀) * ∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' *
(Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x) (μ, ν)
* (Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength x) (μ', ν') := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ kineticTerm 𝓕 A x =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')
rw [kineticTerm d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
toField
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')
rw [toField_eq_repr d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ (-1 / (4 * 𝓕.μ₀) *
((basis
((Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3) ∘
Fin.succSuccAbove 0 1)).repr
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))))
fun j => j.elim0) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ (-1 / (4 * 𝓕.μ₀) *
((basis
((Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3) ∘
Fin.succSuccAbove 0 1)).repr
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))))
fun j => j.elim0) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ (-1 / (4 * 𝓕.μ₀) *
((basis
((Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3) ∘
Fin.succSuccAbove 0 1)).repr
((contrT 0 0 1 ⋯)
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))))
fun j => j.elim0) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')
rw [contrT_basis_repr_apply_eq_fin d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ x_1,
((basis
(Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3)).repr
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x)))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (x_1, x_1)) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ x_1,
((basis
(Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3)).repr
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x)))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (x_1, x_1)) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ x_1,
((basis
(Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3)).repr
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x)))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (x_1, x_1)) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')
conv_lhs =>
enter [2, 2, μ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin d| ((basis
(Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 1 3)).repr
((contrT 2 1 3 ⋯)
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x)))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ))
rw [contrT_basis_repr_apply_eq_fin] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin d| ∑ x_1,
((basis
(Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]))).repr
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯)
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ ↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(x_1, x_1))
enter [2, ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ((basis
(Fin.append
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)
(Fin.append ![Color.up] ![Color.up]))).repr
((prodT
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯) ((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(Tensorial.toTensor (A.toFieldStrength x))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ ↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))
rw [prodT_basis_repr_apply] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ((basis
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)).repr
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯) ((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1 *
((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.toFieldStrength x)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).2
enter [1] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ((basis
((Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5) ∘
Fin.succSuccAbove 0 3)).repr
((contrT 2 0 3 ⋯)
((contrT 4 2 5 ⋯) ((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1
rw [contrT_basis_repr_apply_eq_fin] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ∑ x_1,
((basis
(Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5)).repr
((contrT 4 2 5 ⋯) ((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x)))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(x_1, x_1))
enter [2, μ'] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin d| ((basis
(Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]) ∘
Fin.succSuccAbove 2 5)).repr
((contrT 4 2 5 ⋯) ((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x)))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ'))
rw [contrT_basis_repr_apply_eq_fin] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin d| ∑ x_1,
((basis
(Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]))).repr
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(x_1, x_1))
enter [2, ν'] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis
(Fin.append (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])
(Fin.append ![Color.up] ![Color.up]))).repr
((prodT ((prodT (coMetric d)) (coMetric d))) (Tensorial.toTensor (A.toFieldStrength x))))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))
rw [prodT_basis_repr_apply] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])).repr ((prodT (coMetric d)) (coMetric d)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1 *
((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.toFieldStrength x)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).2
enter [1] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.down, Color.down] ![Color.down, Color.down])).repr ((prodT (coMetric d)) (coMetric d)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1
rw [prodT_basis_repr_apply] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis ![Color.down, Color.down]).repr (coMetric d))
(ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).1 *
((basis ![Color.down, Color.down]).repr (coMetric d))
(ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).2
enter [1] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis ![Color.down, Color.down]).repr (coMetric d))
(ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).1
simp only [Tensorial.self_toTensor_apply] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis ![Color.down, Color.down]).repr (coMetric d))
(ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).1
rw [coMetric_repr_apply_eq_minkowskiMatrix] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| η
((ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).1
0)
((ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).1
1)
change η μ' μ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| η μ' μ
conv_lhs =>
enter [2, 2, μ, 2, ν, 1, 2, μ', 2, ν', 1, 2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis ![Color.down, Color.down]).repr (coMetric d))
(ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).2
simp only [Tensorial.self_toTensor_apply] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis ![Color.down, Color.down]).repr (coMetric d))
(ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).2
rw [coMetric_repr_apply_eq_minkowskiMatrix] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| η
((ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).2
0)
((ComponentIdx.prod
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).1).2
1)
change η (ν') (ν) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| η ν' ν
conv_lhs =>
enter [2, 2, μ, 2, ν, 1, 2, μ', 2, ν', 2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.toFieldStrength x)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).2
rw [toFieldStrength_tensor_basis_eq_basis] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x))
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).2
0,
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).1)
(μ', μ')))
(ν', ν'))).2
1)
change ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x))
(μ', ν') d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')
conv_lhs =>
enter [2, 2, μ, 2, ν, 2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ((basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.toFieldStrength x)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).2
rw [toFieldStrength_tensor_basis_eq_basis] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x))
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).2
0,
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun j => j.elim0) (μ, μ)))
(ν, ν))).2
1)
change ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x))
(μ, ν) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
conv_lhs =>
enter [2, 2, μ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin d| ∑ ν,
(∑ μ',
∑ ν',
η μ' μ * η ν' ν *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
enter [2, ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| (∑ μ',
∑ ν',
η μ' μ * η ν' ν *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
rw [Finset.sum_mul] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ∑ i,
(∑ ν',
η i μ * η ν' ν * ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (i, ν')) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
enter [2, μ'] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin d| (∑ ν',
η μ' μ * η ν' ν * ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν')) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
rw [Finset.sum_mul] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin d| ∑ i,
η μ' μ * η i ν * ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', i) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
enter [2, ν'] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| η μ' μ * η ν' ν * ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
simp d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dμ':Fin 1 ⊕ Fin dν':Fin 1 ⊕ Fin d| η μ' μ * η ν' ν * ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν)
conv_lhs => enter [2, 2, μ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin d| ∑ ν,
∑ μ',
∑ ν',
η μ' μ * η ν' ν *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν); rw [Finset.sum_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin d| ∑ y,
∑ x_1,
∑ ν',
η y μ * η ν' x_1 *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (y, ν') *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, x_1)
conv_lhs => rw [Finset.sum_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d| -1 / (4 * 𝓕.μ₀) *
∑ y,
∑ x_1,
∑ x_2,
∑ ν',
η y x_1 * η ν' x_2 *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (y, ν') *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (x_1, x_2)
conv_lhs => enter [2, 2, μ', 2, ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ':Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ∑ x_1,
∑ ν',
η μ' ν * η ν' x_1 *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (ν, x_1); rw [Finset.sum_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ':Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d| ∑ y,
∑ x_1,
η μ' ν * η y x_1 * ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', y) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (ν, x_1)
conv_lhs => enter [2, 2, μ'] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ':Fin 1 ⊕ Fin d| ∑ ν,
∑ y,
∑ x_1,
η μ' ν * η y x_1 *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', y) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (ν, x_1); rw [Finset.sum_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ':Fin 1 ⊕ Fin d| ∑ y,
∑ x_1,
∑ x_2,
η μ' x_1 * η y x_2 *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', y) *
((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (x_1, x_2)
rfl All goals completed! 🐙
lemma kineticTerm_eq_sum_fieldStrengthMatrix {d} {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (x : SpaceTime d) : A.kineticTerm 𝓕 x =
- 1/(4 * 𝓕.μ₀) * ∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' *
A.fieldStrengthMatrix x (μ, ν) * A.fieldStrengthMatrix x (μ', ν') := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ kineticTerm 𝓕 A x =
-1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν')
rw [kineticTerm_eq_sum d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') =
-1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') All goals completed! 🐙] All goals completed! 🐙
lemma kineticTerm_eq_sum_fieldStrengthMatrix_sq {d} {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (x : SpaceTime d) : A.kineticTerm 𝓕 x =
- 1/(4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖A.fieldStrengthMatrix x (μ, ν)‖ ^ 2 := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ kineticTerm 𝓕 A x = -1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2
rw [kineticTerm_eq_sum_fieldStrengthMatrix d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') =
-1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') =
-1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') =
-1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2
congr 1 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ ∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') =
∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2
refine Finset.sum_congr rfl fun μ _ => Finset.sum_congr rfl fun ν _ => ?_ e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2
rw [Finset.sum_eq_single μ (fun b _ hb => by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝²:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univb:Fin 1 ⊕ Fin dx✝:b ∈ Finset.univhb:b ≠ μ⊢ ∑ ν', η μ b * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (b, ν') = 0 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2 simp [minkowskiMatrix.off_diag_zero hb.symm] All goals completed! 🐙e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2)
(by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ μ ∉ Finset.univ → ∑ ν', η μ μ * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν') = 0e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2 simp All goals completed! 🐙e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2),
Finset.sum_eq_single ν (fun b _ hb => by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝²:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univb:Fin 1 ⊕ Fin dx✝:b ∈ Finset.univhb:b ≠ ν⊢ η μ μ * η ν b * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, b) = 0e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2 simp [minkowskiMatrix.off_diag_zero hb.symm] All goals completed! 🐙e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2)
(by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ν ∉ Finset.univ → η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) = 0e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2 simp All goals completed! 🐙e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2)]e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ, ν) =
η μ μ * η ν ν * ‖(A.fieldStrengthMatrix x) (μ, ν)‖ ^ 2
simp [← pow_two, mul_assoc] All goals completed! 🐙
lemma kineticTerm_eq_sum_potential {d} {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (x : SpaceTime d) :
A.kineticTerm 𝓕 x = - 1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν,
(η μ μ * η ν ν * (∂_ μ A x ν) ^ 2 - ∂_ μ A x ν * ∂_ ν A x μ) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ kineticTerm 𝓕 A x = -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ)
calc _
_ = - 1/(4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν *
(η μ μ * ∂_ μ A x ν - η ν ν * ∂_ ν A x μ)
* (η μ μ * ∂_ μ A x ν - η ν ν * ∂_ ν A x μ) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ kineticTerm 𝓕 A x =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ)
rw [kineticTerm_eq_sum d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ)
congr 1 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ ∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') =
∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ)
refine Finset.sum_congr rfl fun μ _ => Finset.sum_congr rfl fun ν _ => ?_ e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ', ν') =
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ)
rw [Finset.sum_eq_single μ (fun b _ hb => by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝²:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univb:Fin 1 ⊕ Fin dx✝:b ∈ Finset.univhb:b ≠ μ⊢ ∑ ν',
η μ b * η ν ν' * ((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (b, ν') =
0 All goals completed! 🐙 simp [minkowskiMatrix.off_diag_zero hb.symm] All goals completed! 🐙 All goals completed! 🐙)
(by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ μ ∉ Finset.univ →
∑ ν',
η μ μ * η ν ν' * ((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν') =
0 All goals completed! 🐙 simp All goals completed! 🐙 All goals completed! 🐙),
Finset.sum_eq_single ν (fun b _ hb => by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝²:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univb:Fin 1 ⊕ Fin dx✝:b ∈ Finset.univhb:b ≠ ν⊢ η μ μ * η ν b * ((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, b) =
0 All goals completed! 🐙 simp [minkowskiMatrix.off_diag_zero hb.symm] All goals completed! 🐙 All goals completed! 🐙)
(by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ν ∉ Finset.univ →
η μ μ * η ν ν * ((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x)) (μ, ν) =
0 All goals completed! 🐙 simp All goals completed! 🐙 All goals completed! 🐙),
toFieldStrength_basis_repr_apply_eq_single e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν *
(η (μ, ν).1 (μ, ν).1 * ∂_ (μ, ν).1 A.val x (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ∂_ (μ, ν).2 A.val x (μ, ν).1) *
(η (μ, ν).1 (μ, ν).1 * ∂_ (μ, ν).1 A.val x (μ, ν).2 - η (μ, ν).2 (μ, ν).2 * ∂_ (μ, ν).2 A.val x (μ, ν).1) =
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) All goals completed! 🐙] All goals completed! 🐙
_ = - 1/(4 * 𝓕.μ₀) * ∑ μ, ∑ ν,
((η μ μ * η ν ν * (∂_ μ A x ν) ^ 2 - ∂_ μ A x ν * ∂_ ν A x μ) +
(η ν ν * η μ μ * (∂_ ν A x μ) ^ 2 - ∂_ ν A x μ * ∂_ μ A x ν)) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) =
-1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(η ν ν * η μ μ * ∂_ ν A.val x μ ^ 2 - ∂_ ν A.val x μ * ∂_ μ A.val x ν))
congr 1 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ ∑ μ,
∑ ν,
η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) *
(η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) =
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(η ν ν * η μ μ * ∂_ ν A.val x μ ^ 2 - ∂_ ν A.val x μ * ∂_ μ A.val x ν))
refine Finset.sum_congr rfl fun μ _ => Finset.sum_congr rfl fun ν _ => ?_ e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ η μ μ * η ν ν * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) * (η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(η ν ν * η μ μ * ∂_ ν A.val x μ ^ 2 - ∂_ ν A.val x μ * ∂_ μ A.val x ν)
linear_combination (η μ μ * η ν ν * ∂_ μ A x ν ^ 2 -
2 * η ν ν * η ν ν * ∂_ μ A x ν * ∂_ ν A x μ) *
minkowskiMatrix.η_apply_mul_η_apply_diag μ +
(η μ μ * η ν ν * ∂_ ν A x μ ^ 2 - 2 * ∂_ μ A x ν * ∂_ ν A x μ) *
minkowskiMatrix.η_apply_mul_η_apply_diag ν All goals completed! 🐙
_ = - 1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν,
(η μ μ * η ν ν * (∂_ μ A x ν) ^ 2 - ∂_ μ A x ν * ∂_ ν A x μ) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(η ν ν * η μ μ * ∂_ ν A.val x μ ^ 2 - ∂_ ν A.val x μ * ∂_ μ A.val x ν)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ)
simp only [Finset.sum_add_distrib] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d⊢ -1 / (4 * 𝓕.μ₀) *
(∑ x_1, ∑ x_2, (η x_1 x_1 * η x_2 x_2 * ∂_ x_1 A.val x x_2 ^ 2 - ∂_ x_1 A.val x x_2 * ∂_ x_2 A.val x x_1) +
∑ x_1, ∑ x_2, (η x_2 x_2 * η x_1 x_1 * ∂_ x_2 A.val x x_1 ^ 2 - ∂_ x_2 A.val x x_1 * ∂_ x_1 A.val x x_2)) =
-1 / (2 * 𝓕.μ₀) *
∑ x_1, ∑ x_2, (η x_1 x_1 * η x_2 x_2 * ∂_ x_1 A.val x x_2 ^ 2 - ∂_ x_1 A.val x x_2 * ∂_ x_2 A.val x x_1)
conv_lhs =>
enter [2, 2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d| ∑ x_1, ∑ x_2, (η x_2 x_2 * η x_1 x_1 * ∂_ x_2 A.val x x_1 ^ 2 - ∂_ x_2 A.val x x_1 * ∂_ x_1 A.val x x_2)
rw [Finset.sum_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime d| ∑ y, ∑ x_1, (η y y * η x_1 x_1 * ∂_ y A.val x x_1 ^ 2 - ∂_ y A.val x x_1 * ∂_ x_1 A.val x y)
ring All goals completed! 🐙A.3. The kinetic term in terms of the electric and magnetic fields
lemma kineticTerm_eq_electric_magnetic {𝓕 : FreeSpace} (A : ElectromagneticPotential) (t : Time)
(x : Space) (hA : Differentiable ℝ A) :
A.kineticTerm 𝓕 ((toTimeAndSpace 𝓕.c).symm (t, x)) =
1/2 * (𝓕.ε₀ * ‖A.electricField 𝓕.c t x‖ ^ 2 - (1 / 𝓕.μ₀) * ‖A.magneticField 𝓕.c t x‖ ^ 2) := by 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ kineticTerm 𝓕 A ((toTimeAndSpace 𝓕.c).symm (t, x)) =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / 𝓕.μ₀ * ‖magneticField 𝓕.c A t x‖ ^ 2)
rw [kineticTerm_eq_sum 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ', ν') =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / 𝓕.μ₀ * ‖magneticField 𝓕.c A t x‖ ^ 2) 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ', ν') =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / 𝓕.μ₀ * ‖magneticField 𝓕.c A t x‖ ^ 2)] 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ', ν') =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / 𝓕.μ₀ * ‖magneticField 𝓕.c A t x‖ ^ 2)
simp only [one_div] 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -1 / (4 * 𝓕.μ₀) *
∑ μ,
∑ ν,
∑ μ',
∑ ν',
η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ', ν') =
2⁻¹ * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * ‖magneticField 𝓕.c A t x‖ ^ 2)
conv_lhs =>
enter [2, 2, μ, 2, ν, 2, μ', 2, ν'] 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)μ:Fin 1 ⊕ Fin 3ν:Fin 1 ⊕ Fin 3μ':Fin 1 ⊕ Fin 3ν':Fin 1 ⊕ Fin 3| η μ μ' * η ν ν' *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ, ν) *
((Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).repr
(A.toFieldStrength ((toTimeAndSpace 𝓕.c).symm (t, x))))
(μ', ν')
rw [fieldStrengthMatrix_eq_electric_magnetic A t x hA,
fieldStrengthMatrix_eq_electric_magnetic A t x hA] 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)μ:Fin 1 ⊕ Fin 3ν:Fin 1 ⊕ Fin 3μ':Fin 1 ⊕ Fin 3ν':Fin 1 ⊕ Fin 3| (η μ μ' * η ν ν' *
match μ, ν with
| Sum.inl 0, Sum.inl 0 => 0
| Sum.inl 0, Sum.inr i => -(electricField 𝓕.c A t x).ofLp i / 𝓕.c.val
| Sum.inr i, Sum.inl 0 => (electricField 𝓕.c A t x).ofLp i / 𝓕.c.val
| Sum.inr i, Sum.inr j =>
match i, j with
| 0, 0 => 0
| 0, 1 => -(magneticField 𝓕.c A t x).ofLp 2
| 0, 2 => (magneticField 𝓕.c A t x).ofLp 1
| 1, 0 => (magneticField 𝓕.c A t x).ofLp 2
| 1, 1 => 0
| 1, 2 => -(magneticField 𝓕.c A t x).ofLp 0
| 2, 0 => -(magneticField 𝓕.c A t x).ofLp 1
| 2, 1 => (magneticField 𝓕.c A t x).ofLp 0
| 2, 2 => 0) *
match μ', ν' with
| Sum.inl 0, Sum.inl 0 => 0
| Sum.inl 0, Sum.inr i => -(electricField 𝓕.c A t x).ofLp i / 𝓕.c.val
| Sum.inr i, Sum.inl 0 => (electricField 𝓕.c A t x).ofLp i / 𝓕.c.val
| Sum.inr i, Sum.inr j =>
match i, j with
| 0, 0 => 0
| 0, 1 => -(magneticField 𝓕.c A t x).ofLp 2
| 0, 2 => (magneticField 𝓕.c A t x).ofLp 1
| 1, 0 => (magneticField 𝓕.c A t x).ofLp 2
| 1, 1 => 0
| 1, 2 => -(magneticField 𝓕.c A t x).ofLp 0
| 2, 0 => -(magneticField 𝓕.c A t x).ofLp 1
| 2, 1 => (magneticField 𝓕.c A t x).ofLp 0
| 2, 2 => 0
simp [Fintype.sum_sum_type, Fin.sum_univ_three, EuclideanSpace.norm_sq_eq] 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -1 / (4 * 𝓕.μ₀) *
(-(-(electricField 𝓕.c A t x).ofLp 0 / 𝓕.c.val * (-(electricField 𝓕.c A t x).ofLp 0 / 𝓕.c.val)) +
-(-(electricField 𝓕.c A t x).ofLp 1 / 𝓕.c.val * (-(electricField 𝓕.c A t x).ofLp 1 / 𝓕.c.val)) +
-(-(electricField 𝓕.c A t x).ofLp 2 / 𝓕.c.val * (-(electricField 𝓕.c A t x).ofLp 2 / 𝓕.c.val)) +
(-((electricField 𝓕.c A t x).ofLp 0 / 𝓕.c.val * ((electricField 𝓕.c A t x).ofLp 0 / 𝓕.c.val)) +
((magneticField 𝓕.c A t x).ofLp 2 * (magneticField 𝓕.c A t x).ofLp 2 +
(magneticField 𝓕.c A t x).ofLp 1 * (magneticField 𝓕.c A t x).ofLp 1) +
(-((electricField 𝓕.c A t x).ofLp 1 / 𝓕.c.val * ((electricField 𝓕.c A t x).ofLp 1 / 𝓕.c.val)) +
((magneticField 𝓕.c A t x).ofLp 2 * (magneticField 𝓕.c A t x).ofLp 2 +
(magneticField 𝓕.c A t x).ofLp 0 * (magneticField 𝓕.c A t x).ofLp 0)) +
(-((electricField 𝓕.c A t x).ofLp 2 / 𝓕.c.val * ((electricField 𝓕.c A t x).ofLp 2 / 𝓕.c.val)) +
((magneticField 𝓕.c A t x).ofLp 1 * (magneticField 𝓕.c A t x).ofLp 1 +
(magneticField 𝓕.c A t x).ofLp 0 * (magneticField 𝓕.c A t x).ofLp 0)))) =
2⁻¹ *
(𝓕.ε₀ *
((electricField 𝓕.c A t x).ofLp 0 ^ 2 + (electricField 𝓕.c A t x).ofLp 1 ^ 2 +
(electricField 𝓕.c A t x).ofLp 2 ^ 2) -
𝓕.μ₀⁻¹ *
((magneticField 𝓕.c A t x).ofLp 0 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2 +
(magneticField 𝓕.c A t x).ofLp 2 ^ 2))
field_simp 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -((-(electricField 𝓕.c A t x).ofLp 0 ^ 2 + -(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
(-(electricField 𝓕.c A t x).ofLp 0 ^ 2 +
𝓕.c.val ^ 2 * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2) +
(-(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
𝓕.c.val ^ 2 * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)) +
(-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
𝓕.c.val ^ 2 * ((magneticField 𝓕.c A t x).ofLp 1 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)))) *
2) =
4 * 𝓕.c.val ^ 2 *
(𝓕.μ₀ * 𝓕.ε₀ *
((electricField 𝓕.c A t x).ofLp 0 ^ 2 + (electricField 𝓕.c A t x).ofLp 1 ^ 2 +
(electricField 𝓕.c A t x).ofLp 2 ^ 2) -
((magneticField 𝓕.c A t x).ofLp 0 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2 +
(magneticField 𝓕.c A t x).ofLp 2 ^ 2))
rw [FreeSpace.c_sq 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -((-(electricField 𝓕.c A t x).ofLp 0 ^ 2 + -(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
(-(electricField 𝓕.c A t x).ofLp 0 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2) +
(-(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)) +
(-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 1 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)))) *
2) =
4 * (1 / (𝓕.ε₀ * 𝓕.μ₀)) *
(𝓕.μ₀ * 𝓕.ε₀ *
((electricField 𝓕.c A t x).ofLp 0 ^ 2 + (electricField 𝓕.c A t x).ofLp 1 ^ 2 +
(electricField 𝓕.c A t x).ofLp 2 ^ 2) -
((magneticField 𝓕.c A t x).ofLp 0 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2 +
(magneticField 𝓕.c A t x).ofLp 2 ^ 2)) 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -((-(electricField 𝓕.c A t x).ofLp 0 ^ 2 + -(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
(-(electricField 𝓕.c A t x).ofLp 0 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2) +
(-(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)) +
(-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 1 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)))) *
2) =
4 * (1 / (𝓕.ε₀ * 𝓕.μ₀)) *
(𝓕.μ₀ * 𝓕.ε₀ *
((electricField 𝓕.c A t x).ofLp 0 ^ 2 + (electricField 𝓕.c A t x).ofLp 1 ^ 2 +
(electricField 𝓕.c A t x).ofLp 2 ^ 2) -
((magneticField 𝓕.c A t x).ofLp 0 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2 +
(magneticField 𝓕.c A t x).ofLp 2 ^ 2))] 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -((-(electricField 𝓕.c A t x).ofLp 0 ^ 2 + -(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
(-(electricField 𝓕.c A t x).ofLp 0 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2) +
(-(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)) +
(-(electricField 𝓕.c A t x).ofLp 2 ^ 2 +
1 / (𝓕.ε₀ * 𝓕.μ₀) * ((magneticField 𝓕.c A t x).ofLp 1 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)))) *
2) =
4 * (1 / (𝓕.ε₀ * 𝓕.μ₀)) *
(𝓕.μ₀ * 𝓕.ε₀ *
((electricField 𝓕.c A t x).ofLp 0 ^ 2 + (electricField 𝓕.c A t x).ofLp 1 ^ 2 +
(electricField 𝓕.c A t x).ofLp 2 ^ 2) -
((magneticField 𝓕.c A t x).ofLp 0 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2 +
(magneticField 𝓕.c A t x).ofLp 2 ^ 2))
field_simp 𝓕:FreeSpaceA:ElectromagneticPotentialt:Timex:SpacehA:Differentiable ℝ (A.val 3)⊢ -(((-(electricField 𝓕.c A t x).ofLp 0 ^ 2 + -(electricField 𝓕.c A t x).ofLp 1 ^ 2 +
-(electricField 𝓕.c A t x).ofLp 2 ^ 2) *
𝓕.ε₀ *
𝓕.μ₀ +
(-((electricField 𝓕.c A t x).ofLp 0 ^ 2 * 𝓕.ε₀ * 𝓕.μ₀) +
((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2) +
(-((electricField 𝓕.c A t x).ofLp 1 ^ 2 * 𝓕.ε₀ * 𝓕.μ₀) +
((magneticField 𝓕.c A t x).ofLp 2 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)) +
(-((electricField 𝓕.c A t x).ofLp 2 ^ 2 * 𝓕.ε₀ * 𝓕.μ₀) +
((magneticField 𝓕.c A t x).ofLp 1 ^ 2 + (magneticField 𝓕.c A t x).ofLp 0 ^ 2)))) *
2) =
4 *
(𝓕.ε₀ * 𝓕.μ₀ *
((electricField 𝓕.c A t x).ofLp 0 ^ 2 + (electricField 𝓕.c A t x).ofLp 1 ^ 2 +
(electricField 𝓕.c A t x).ofLp 2 ^ 2) -
((magneticField 𝓕.c A t x).ofLp 0 ^ 2 + (magneticField 𝓕.c A t x).ofLp 1 ^ 2 +
(magneticField 𝓕.c A t x).ofLp 2 ^ 2))
ring All goals completed! 🐙
lemma kineticTerm_eq_electric_magnetic' {𝓕 : FreeSpace} {A : ElectromagneticPotential}
(hA : Differentiable ℝ A) (x : SpaceTime) :
A.kineticTerm 𝓕 x =
1/2 * (𝓕.ε₀ * ‖A.electricField 𝓕.c (x.time 𝓕.c) x.space‖ ^ 2 -
(1 / 𝓕.μ₀) * ‖A.magneticField 𝓕.c (x.time 𝓕.c) x.space‖ ^ 2) := by 𝓕:FreeSpaceA:ElectromagneticPotentialhA:Differentiable ℝ (A.val 3)x:SpaceTime⊢ kineticTerm 𝓕 A x =
1 / 2 *
(𝓕.ε₀ * ‖electricField 𝓕.c A ((time 𝓕.c) x) (space x)‖ ^ 2 -
1 / 𝓕.μ₀ * ‖magneticField 𝓕.c A ((time 𝓕.c) x) (space x)‖ ^ 2)
rw [← kineticTerm_eq_electric_magnetic _ _ _ hA, 𝓕:FreeSpaceA:ElectromagneticPotentialhA:Differentiable ℝ (A.val 3)x:SpaceTime⊢ kineticTerm 𝓕 A x = kineticTerm 𝓕 A ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x)) All goals completed! 🐙 toTimeAndSpace_symm_apply_time_space 𝓕:FreeSpaceA:ElectromagneticPotentialhA:Differentiable ℝ (A.val 3)x:SpaceTime⊢ kineticTerm 𝓕 A x = kineticTerm 𝓕 A x All goals completed! 🐙] All goals completed! 🐙A.4. The kinetic term in terms of the electric and magnetic matrix
lemma kineticTerm_eq_electricMatrix_magneticFieldMatrix_time_space {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (t : Time)
(x : Space d) (hA : Differentiable ℝ A) :
A.kineticTerm 𝓕 ((toTimeAndSpace 𝓕.c).symm (t, x)) =
1/2 * (𝓕.ε₀ * ‖A.electricField 𝓕.c t x‖ ^ 2 -
(1 / (2 * 𝓕.μ₀)) * ∑ i, ∑ j, ‖A.magneticFieldMatrix 𝓕.c t x (i, j)‖ ^ 2) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ kineticTerm 𝓕 A ((toTimeAndSpace 𝓕.c).symm (t, x)) =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A t x (i, j)‖ ^ 2)
rw [kineticTerm_eq_sum_fieldStrengthMatrix_sq d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (μ, ν)‖ ^ 2 =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A t x (i, j)‖ ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (μ, ν)‖ ^ 2 =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A t x (i, j)‖ ^ 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) * ∑ μ, ∑ ν, η μ μ * η ν ν * ‖(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (μ, ν)‖ ^ 2 =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A t x (i, j)‖ ^ 2)
simp [Fintype.sum_sum_type] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
∑ x_1,
(-(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2)
rw [Finset.sum_add_distrib d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(∑ x_1, -(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(∑ x_1, -(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(∑ x_1, -(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2)
simp only [Fin.isValue, Finset.sum_neg_distrib] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2)
have h1 : ∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2
= ∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x)))
(Sum.inr i, Sum.inr j) ^ 2 := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ kineticTerm 𝓕 A ((toTimeAndSpace 𝓕.c).symm (t, x)) =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A t x (i, j)‖ ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2) rfl d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * ∑ x_1, ∑ x_2, magneticFieldMatrix 𝓕.c A t x (x_1, x_2) ^ 2)
rw [h1 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 -
𝓕.μ₀⁻¹ * 2⁻¹ * ∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 -
𝓕.μ₀⁻¹ * 2⁻¹ * ∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ -1 / (4 * 𝓕.μ₀) *
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2 +
(-∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2 +
∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2)) =
2⁻¹ *
(𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 -
𝓕.μ₀⁻¹ * 2⁻¹ * ∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2)
ring_nf d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
have h2 : ‖electricField 𝓕.c A t x‖ ^ 2 = 𝓕.c.val ^ 2 *
∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x)))
(Sum.inl 0, Sum.inr i)| ^ 2 := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.val⊢ kineticTerm 𝓕 A ((toTimeAndSpace 𝓕.c).symm (t, x)) =
1 / 2 * (𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 - 1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A t x (i, j)‖ ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
rw [EuclideanSpace.norm_sq_eq d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ ∑ i, ‖(electricField 𝓕.c A t x).ofLp i‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ ∑ i, ‖(electricField 𝓕.c A t x).ofLp i‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ ∑ i, ‖(electricField 𝓕.c A t x).ofLp i‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
conv_lhs =>
enter [2, i] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2i:Fin d| ‖(electricField 𝓕.c A t x).ofLp i‖ ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
rw [electricField_eq_fieldStrengthMatrix A t x i hA] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2i:Fin d| ‖-𝓕.c.val * (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)‖ ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
simp only [Fin.isValue, neg_mul, norm_neg, norm_mul, Real.norm_eq_abs, FreeSpace.c_abs] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2i:Fin d| (𝓕.c.val * |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)|) ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
rw [mul_pow] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2i:Fin d| 𝓕.c.val ^ 2 * |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
rw [← Finset.mul_sum d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2⊢ 𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ * ‖electricField 𝓕.c A t x‖ ^ 2 * (1 / 2)
rw [h2 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ *
(𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2) *
(1 / 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ *
(𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2) *
(1 / 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) *
(1 / 4) +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ *
(𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2) *
(1 / 2)
simp only [Fin.isValue, one_div, sq_abs] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * 4⁻¹ +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inl 0) ^ 2) * 4⁻¹ +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ *
(𝓕.c.val ^ 2 * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) *
2⁻¹
conv_lhs =>
enter [1, 2, 1, 2, 2, i] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2i:Fin d| (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inl 0) ^ 2
rw [fieldStrengthMatrix_antisymm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2i:Fin d| (-(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)) ^ 2
simp [FreeSpace.c_sq] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ (𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * 4⁻¹ +
(𝓕.μ₀⁻¹ * ∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * 4⁻¹ +
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) =
(𝓕.μ₀⁻¹ * ∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
(-1 / 4) +
𝓕.ε₀ *
(𝓕.μ₀⁻¹ * 𝓕.ε₀⁻¹ *
∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) *
2⁻¹
field_simp d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dt:Timex:Space dhA:Differentiable ℝ A.valh1:∑ i, ∑ j, magneticFieldMatrix 𝓕.c A t x (i, j) ^ 2 =
∑ i, ∑ j, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr i, Sum.inr j) ^ 2h2:‖electricField 𝓕.c A t x‖ ^ 2 =
𝓕.c.val ^ 2 * ∑ i, |(A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr i)| ^ 2⊢ ((∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * (1 + 1) +
-∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) *
2 =
-((∑ x_1, ∑ x_2, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inr x_1, Sum.inr x_2) ^ 2) * 2) +
(∑ x_1, (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm (t, x))) (Sum.inl 0, Sum.inr x_1) ^ 2) * 4
ring All goals completed! 🐙
lemma kineticTerm_eq_electricMatrix_magneticFieldMatrix {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (x : SpaceTime d)
(hA : Differentiable ℝ A) :
A.kineticTerm 𝓕 x =
1/2 * (𝓕.ε₀ * ‖A.electricField 𝓕.c (x.time 𝓕.c) x.space‖ ^ 2 -
(1 / (2 * 𝓕.μ₀)) * ∑ i, ∑ j, ‖A.magneticFieldMatrix 𝓕.c (x.time 𝓕.c) x.space (i, j)‖ ^ 2) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:Differentiable ℝ A.val⊢ kineticTerm 𝓕 A x =
1 / 2 *
(𝓕.ε₀ * ‖electricField 𝓕.c A ((time 𝓕.c) x) (space x)‖ ^ 2 -
1 / (2 * 𝓕.μ₀) * ∑ i, ∑ j, ‖magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) (space x) (i, j)‖ ^ 2)
rw [← kineticTerm_eq_electricMatrix_magneticFieldMatrix_time_space A (x.time 𝓕.c) x.space hA, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:Differentiable ℝ A.val⊢ kineticTerm 𝓕 A x = kineticTerm 𝓕 A ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x)) All goals completed! 🐙
toTimeAndSpace_symm_apply_time_space d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:Differentiable ℝ A.val⊢ kineticTerm 𝓕 A x = kineticTerm 𝓕 A x All goals completed! 🐙] All goals completed! 🐙A.5. The kinetic term for constant fields
lemma kineticTerm_const {d} {𝓕 : FreeSpace} (A₀ : Lorentz.Vector d) :
kineticTerm 𝓕 ⟨fun _ : SpaceTime d => A₀⟩ = 0 := by d:ℕ𝓕:FreeSpaceA₀:Lorentz.Vector d⊢ kineticTerm 𝓕 { val := fun x => A₀ } = 0
funext x d:ℕ𝓕:FreeSpaceA₀:Lorentz.Vector dx:SpaceTime d⊢ kineticTerm 𝓕 { val := fun x => A₀ } x = 0 x
simp [kineticTerm_eq_sum_potential, SpaceTime.deriv_eq] All goals completed! 🐙lemma kineticTerm_add_const {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(A₀ : Lorentz.Vector d) :
kineticTerm 𝓕 ⟨fun x => A x + A₀⟩ = kineticTerm 𝓕 A := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dA₀:Lorentz.Vector d⊢ kineticTerm 𝓕 { val := fun x => A.val x + A₀ } = kineticTerm 𝓕 A
funext x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dA₀:Lorentz.Vector dx:SpaceTime d⊢ kineticTerm 𝓕 { val := fun x => A.val x + A₀ } x = kineticTerm 𝓕 A x
simp [kineticTerm_eq_sum_potential, SpaceTime.deriv_eq] All goals completed! 🐙A.6. Smoothness of the kinetic term
lemma kineticTerm_contDiff {d} {n : WithTop ℕ∞} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(hA : ContDiff ℝ (n + 1) A) :
ContDiff ℝ n (A.kineticTerm 𝓕) := by d:ℕn:ℕ∞ω𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ (n + 1) A.val⊢ ContDiff ℝ n (kineticTerm 𝓕 A)
rw [funext fun x => kineticTerm_eq_sum_fieldStrengthMatrix (𝓕 := 𝓕) A x d:ℕn:ℕ∞ω𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ (n + 1) A.val⊢ ContDiff ℝ n fun x =>
-1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν') d:ℕn:ℕ∞ω𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ (n + 1) A.val⊢ ContDiff ℝ n fun x =>
-1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν')] d:ℕn:ℕ∞ω𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ (n + 1) A.val⊢ ContDiff ℝ n fun x =>
-1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν')
have h (μν) : ContDiff ℝ n (A.fieldStrengthMatrix · μν) := fieldStrengthMatrix_contDiff hA d:ℕn:ℕ∞ω𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ (n + 1) A.valh:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)), ContDiff ℝ n fun x => (A.fieldStrengthMatrix x) μν⊢ ContDiff ℝ n fun x =>
-1 / (4 * 𝓕.μ₀) *
∑ μ, ∑ ν, ∑ μ', ∑ ν', η μ μ' * η ν ν' * (A.fieldStrengthMatrix x) (μ, ν) * (A.fieldStrengthMatrix x) (μ', ν')
fun_prop All goals completed! 🐙A.7. The kinetic term shifted by time mul a constant
This result is used in finding the canonical momentum.
lemma kineticTerm_add_time_mul_const {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(ha : Differentiable ℝ A)
(c : Lorentz.Vector d) (x : SpaceTime d) :
kineticTerm 𝓕 ⟨fun x => A x + x (Sum.inl 0) • c⟩ x = A.kineticTerm 𝓕 x +
(-1 / (2 * 𝓕.μ₀) * ∑ ν, ((2 * c ν * η ν ν * ∂_ (Sum.inl 0) A x ν + η ν ν * c ν ^ 2 -
2 * c ν * (∂_ ν A x (Sum.inl 0)))) + 1/(2 * 𝓕.μ₀) * c (Sum.inl 0) ^2) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime d⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
have diff_a : ∂_ (Sum.inl 0) (fun x => A x + x (Sum.inl 0) • c) =
∂_ (Sum.inl 0) A + (fun x => c) := by
funext x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ ∂_ (Sum.inl 0) (fun x => A.val x + x (Sum.inl 0) • c) x ν = (∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
rw [SpaceTime.deriv_eq, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => A.val x + x (Sum.inl 0) • c) x) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) fderiv_fun_add ha.differentiableAt (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ DifferentiableAt ℝ (fun x => x (Sum.inl 0) • c) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) fun_prop All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)),
fderiv_smul_const (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ DifferentiableAt ℝ (fun x => x (Sum.inl 0)) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) fun_prop All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2))] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inl 0)) ν =
(∂_ (Sum.inl 0) A.val + fun x => c) x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
simp [Lorentz.Vector.coordCLM, SpaceTime.deriv_eq] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => c⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
have diff_b (i : Fin d) : ∂_ (Sum.inr i) (fun x => A x + x (Sum.inl 0) • c) =
∂_ (Sum.inr i) A := by
funext x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ ∂_ (Sum.inr i) (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
rw [SpaceTime.deriv_eq, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => A.val x + x (Sum.inl 0) • c) x) (Lorentz.Vector.basis (Sum.inr i)) ν = ∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inr i)) ν =
∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) fderiv_fun_add ha.differentiableAt (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ DifferentiableAt ℝ (fun x => x (Sum.inl 0) • c) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inr i)) ν =
∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) fun_prop All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inr i)) ν =
∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)),
fderiv_smul_const (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ DifferentiableAt ℝ (fun x => x (Sum.inl 0)) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inr i)) ν =
∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) fun_prop All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inr i)) ν =
∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2))] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx✝:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => ci:Fin dx:SpaceTime dν:Fin 1 ⊕ Fin d⊢ (fderiv ℝ A.val x + (fderiv ℝ (fun x => x (Sum.inl 0)) x).smulRight c) (Lorentz.Vector.basis (Sum.inr i)) ν =
∂_ (Sum.inr i) A.val x ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
simp [Lorentz.Vector.coordCLM, SpaceTime.deriv_eq] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.val⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
have hdiff (μ ν : Fin 1 ⊕ Fin d) :
∂_ μ (fun x => A x + x (Sum.inl 0) • c) x ν =
∂_ μ A x ν + if μ = Sum.inl 0 then c ν else 0 := by
match μ with
| Sum.inl 0 => d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin d⊢ ∂_ (Sum.inl 0) (fun x => A.val x + x (Sum.inl 0) • c) x ν =
∂_ (Sum.inl 0) A.val x ν + if Sum.inl 0 = Sum.inl 0 then c ν else 0 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) simp [diff_a] All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
| Sum.inr i => d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valμ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin di:Fin d⊢ ∂_ (Sum.inr i) (fun x => A.val x + x (Sum.inl 0) • c) x ν =
∂_ (Sum.inr i) A.val x ν + if Sum.inr i = Sum.inl 0 then c ν else 0 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) simp [diff_b i] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
rw [kineticTerm_eq_sum_potential, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ -1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν ^ 2 -
∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν *
∂_ ν { val := fun x => A.val x + x (Sum.inl 0) • c }.val x μ) =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ -1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν ^ 2 -
∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν *
∂_ ν { val := fun x => A.val x + x (Sum.inl 0) • c }.val x μ) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) kineticTerm_eq_sum_potential d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ -1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν ^ 2 -
∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν *
∂_ ν { val := fun x => A.val x + x (Sum.inl 0) • c }.val x μ) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ -1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν ^ 2 -
∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν *
∂_ ν { val := fun x => A.val x + x (Sum.inl 0) • c }.val x μ) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ -1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν,
(η μ μ * η ν ν * ∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν ^ 2 -
∂_ μ { val := fun x => A.val x + x (Sum.inl 0) • c }.val x ν *
∂_ ν { val := fun x => A.val x + x (Sum.inl 0) • c }.val x μ) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
simp only [hdiff] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * (∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) ^ 2 -
(∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) *
(∂_ x_2 A.val x x_1 + if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
have key (μ ν : Fin 1 ⊕ Fin d) :
η μ μ * η ν ν * (∂_ μ A x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A x ν + if μ = Sum.inl 0 then c ν else 0) *
(∂_ ν A x μ + if ν = Sum.inl 0 then c μ else 0) =
(η μ μ * η ν ν * ∂_ μ A x ν ^ 2 - ∂_ μ A x ν * ∂_ ν A x μ) +
((if μ = Sum.inl 0 then 2 * (c ν * η μ μ * η ν ν * ∂_ μ A x ν) +
η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A x μ else 0) -
(if ν = Sum.inl 0 then c μ * ∂_ μ A x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * (if ν = Sum.inl 0 then c μ else 0)) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime d⊢ kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) • c } x =
kineticTerm 𝓕 A x +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * (∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) ^ 2 -
(∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) *
(∂_ x_2 A.val x x_1 + if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
split_ifs pos d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:μ = Sum.inl 0h✝:ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + c ν) ^ 2 - (∂_ μ A.val x ν + c ν) * (∂_ ν A.val x μ + c μ) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ -
c μ * ∂_ μ A.val x ν -
c ν * c μ)neg d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:μ = Sum.inl 0h✝:¬ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + c ν) ^ 2 - (∂_ μ A.val x ν + c ν) * (∂_ ν A.val x μ + 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ - 0 - c ν * 0)pos d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:¬μ = Sum.inl 0h✝:ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + 0) ^ 2 - (∂_ μ A.val x ν + 0) * (∂_ ν A.val x μ + c μ) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ + (0 - c μ * ∂_ μ A.val x ν - 0 * c μ)neg d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:¬μ = Sum.inl 0h✝:¬ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + 0) ^ 2 - (∂_ μ A.val x ν + 0) * (∂_ ν A.val x μ + 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ + (0 - 0 - 0 * 0) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * (∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) ^ 2 -
(∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) *
(∂_ x_2 A.val x x_1 + if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) <;> pos d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:μ = Sum.inl 0h✝:ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + c ν) ^ 2 - (∂_ μ A.val x ν + c ν) * (∂_ ν A.val x μ + c μ) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ -
c μ * ∂_ μ A.val x ν -
c ν * c μ)neg d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:μ = Sum.inl 0h✝:¬ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + c ν) ^ 2 - (∂_ μ A.val x ν + c ν) * (∂_ ν A.val x μ + 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ - 0 - c ν * 0)pos d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:¬μ = Sum.inl 0h✝:ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + 0) ^ 2 - (∂_ μ A.val x ν + 0) * (∂_ ν A.val x μ + c μ) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ + (0 - c μ * ∂_ μ A.val x ν - 0 * c μ)neg d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0μ:Fin 1 ⊕ Fin dν:Fin 1 ⊕ Fin dh✝¹:¬μ = Sum.inl 0h✝:¬ν = Sum.inl 0⊢ η μ μ * η ν ν * (∂_ μ A.val x ν + 0) ^ 2 - (∂_ μ A.val x ν + 0) * (∂_ ν A.val x μ + 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ + (0 - 0 - 0 * 0) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * (∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) ^ 2 -
(∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) *
(∂_ x_2 A.val x x_1 + if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) ring d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * (∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) ^ 2 -
(∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) *
(∂_ x_2 A.val x x_1 + if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * (∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) ^ 2 -
(∂_ x_1 A.val x x_2 + if x_1 = Sum.inl 0 then c x_2 else 0) *
(∂_ x_2 A.val x x_1 + if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
simp only [key] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (2 * 𝓕.μ₀) *
∑ x_1,
∑ x_2,
(η x_1 x_1 * η x_2 x_2 * ∂_ x_1 A.val x x_2 ^ 2 - ∂_ x_1 A.val x x_2 * ∂_ x_2 A.val x x_1 +
(((if x_1 = Sum.inl 0 then
2 * (c x_2 * η x_1 x_1 * η x_2 x_2 * ∂_ x_1 A.val x x_2) + η x_1 x_1 * η x_2 x_2 * c x_2 ^ 2 -
c x_2 * ∂_ x_2 A.val x x_1
else 0) -
if x_2 = Sum.inl 0 then c x_1 * ∂_ x_1 A.val x x_2 else 0) -
(if x_1 = Sum.inl 0 then c x_2 else 0) * if x_2 = Sum.inl 0 then c x_1 else 0)) =
-1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ) +
(-1 / (2 * 𝓕.μ₀) *
∑ ν, (2 * c ν * η ν ν * ∂_ (Sum.inl 0) A.val x ν + η ν ν * c ν ^ 2 - 2 * c ν * ∂_ ν A.val x (Sum.inl 0)) +
1 / (2 * 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
simp only [Finset.sum_add_distrib, Finset.sum_sub_distrib, Finset.sum_ite_irrel,
Finset.sum_const_zero, Finset.sum_ite_eq', Finset.mem_univ, ↓reduceIte, mul_ite, ite_mul,
mul_zero, zero_mul, inl_0_inl_0, one_mul, mul_one, two_mul, add_mul, mul_add] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dha:Differentiable ℝ A.valc:Lorentz.Vector dx:SpaceTime ddiff_a:(∂_ (Sum.inl 0) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inl 0) A.val + fun x => cdiff_b:∀ (i : Fin d), (∂_ (Sum.inr i) fun x => A.val x + x (Sum.inl 0) • c) = ∂_ (Sum.inr i) A.valhdiff:∀ (μ ν : Fin 1 ⊕ Fin d),
∂_ μ (fun x => A.val x + x (Sum.inl 0) • c) x ν = ∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0key:∀ (μ ν : Fin 1 ⊕ Fin d),
η μ μ * η ν ν * (∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) ^ 2 -
(∂_ μ A.val x ν + if μ = Sum.inl 0 then c ν else 0) * (∂_ ν A.val x μ + if ν = Sum.inl 0 then c μ else 0) =
η μ μ * η ν ν * ∂_ μ A.val x ν ^ 2 - ∂_ μ A.val x ν * ∂_ ν A.val x μ +
(((if μ = Sum.inl 0 then
2 * (c ν * η μ μ * η ν ν * ∂_ μ A.val x ν) + η μ μ * η ν ν * c ν ^ 2 - c ν * ∂_ ν A.val x μ
else 0) -
if ν = Sum.inl 0 then c μ * ∂_ μ A.val x ν else 0) -
(if μ = Sum.inl 0 then c ν else 0) * if ν = Sum.inl 0 then c μ else 0)⊢ -1 / (𝓕.μ₀ + 𝓕.μ₀) *
(∑ x_1, ∑ x_2, η x_1 x_1 * η x_2 x_2 * ∂_ x_1 A.val x x_2 ^ 2 -
∑ x_1, ∑ x_2, ∂_ x_1 A.val x x_2 * ∂_ x_2 A.val x x_1) +
-1 / (𝓕.μ₀ + 𝓕.μ₀) *
(∑ x_1, c x_1 * η x_1 x_1 * ∂_ (Sum.inl 0) A.val x x_1 + ∑ x_1, c x_1 * η x_1 x_1 * ∂_ (Sum.inl 0) A.val x x_1 +
∑ x, η x x * c x ^ 2 -
∑ x_1, c x_1 * ∂_ x_1 A.val x (Sum.inl 0) -
∑ x_1, c x_1 * ∂_ x_1 A.val x (Sum.inl 0) -
c (Sum.inl 0) * c (Sum.inl 0)) =
-1 / (𝓕.μ₀ + 𝓕.μ₀) *
(∑ x_1, ∑ x_2, η x_1 x_1 * η x_2 x_2 * ∂_ x_1 A.val x x_2 ^ 2 -
∑ x_1, ∑ x_2, ∂_ x_1 A.val x x_2 * ∂_ x_2 A.val x x_1) +
(-1 / (𝓕.μ₀ + 𝓕.μ₀) *
(∑ x_1, c x_1 * η x_1 x_1 * ∂_ (Sum.inl 0) A.val x x_1 + ∑ x_1, c x_1 * η x_1 x_1 * ∂_ (Sum.inl 0) A.val x x_1 +
∑ x, η x x * c x ^ 2 -
(∑ x_1, c x_1 * ∂_ x_1 A.val x (Sum.inl 0) + ∑ x_1, c x_1 * ∂_ x_1 A.val x (Sum.inl 0))) +
1 / (𝓕.μ₀ + 𝓕.μ₀) * c (Sum.inl 0) ^ 2)
ring All goals completed! 🐙B. Variational gradient of the kinetic term
We define the variational gradient of the kinetic term, which is the left-hand side of Gauss's law and Ampère's law in vacuum.
B.1. Variational gradient in terms of fderiv
We give a first simplification of the variational gradient in terms of the
a complicated expression involving fderiv. This is not very useful in itself,
but acts as a starting point for further simplifications.
lemma gradKineticTerm_eq_sum_fderiv {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(hA : ContDiff ℝ ∞ A) :
let F' : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → ℝ) →
SpaceTime d → Lorentz.Vector d := fun μν => (fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A x' μν.2 *
(fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) • Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.gradKineticTerm 𝓕 = fun x => ∑ μν, F' μν (fun x' => -1/(2 * 𝓕.μ₀) * (fun _ => 1) x') x := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ let F' := fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) • Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) • Lorentz.Vector.basis μν.1);
gradKineticTerm 𝓕 A = fun x => ∑ μν, F' μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x
apply HasVarGradientAt.varGradient d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun q' x => kineticTerm 𝓕 { val := q' } x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
change HasVarGradientAt (fun A' x => ElectromagneticPotential.kineticTerm 𝓕 ⟨A'⟩ x) _ A d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun A' x => kineticTerm 𝓕 { val := A' } x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
conv => d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val| HasVarGradientAt (fun A' x => kineticTerm 𝓕 { val := A' } x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
enter [1, A', x] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valA':SpaceTime d → Lorentz.Vector dx:SpaceTime d| kineticTerm 𝓕 { val := A' } x
rw [kineticTerm_eq_sum_potential] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valA':SpaceTime d → Lorentz.Vector dx:SpaceTime d| -1 / (2 * 𝓕.μ₀) *
∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ)
let F : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) →
SpaceTime d → ℝ := fun (μ, ν) A' x =>
(η μ μ * η ν ν * ∂_ μ A' x ν ^ 2 - ∂_ μ A' x ν * ∂_ ν A' x μ) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μ⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
have F_h (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)) :=
HasVarAdjDerivAt.congr (G := F μν)
(HasVarAdjDerivAt.add _ _ _ _ _
(HasVarAdjDerivAt.const_mul _ _ A
(HasVarAdjDerivAt.mul _ _ _ _ A (deriv_hasVarAdjDerivAt μν.1 μν.2 A hA)
(deriv_hasVarAdjDerivAt μν.1 μν.2 A hA)) (c := η μν.1 μν.1 * η μν.2 μν.2))
(HasVarAdjDerivAt.neg _ _ A
(HasVarAdjDerivAt.mul _ _ _ _ A (deriv_hasVarAdjDerivAt μν.1 μν.2 A hA)
(deriv_hasVarAdjDerivAt μν.2 μν.1 A hA))))
(fun φ _ => funext fun x => by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)φ:SpaceTime d → Lorentz.Vector dx✝:ContDiff ℝ ∞ φx:SpaceTime d⊢ η μν.1 μν.1 * η μν.2 μν.2 * (∂_ μν.1 φ x μν.2 * ∂_ μν.1 φ x μν.2) + -(∂_ μν.1 φ x μν.2 * ∂_ μν.2 φ x μν.1) = F μν φ x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
simp [F] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)φ:SpaceTime d → Lorentz.Vector dx✝:ContDiff ℝ ∞ φx:SpaceTime d⊢ η μν.1 μν.1 * η μν.2 μν.2 * (∂_ μν.1 φ x μν.2 * ∂_ μν.1 φ x μν.2) + -(∂_ μν.1 φ x μν.2 * ∂_ μν.2 φ x μν.1) =
η μν.1 μν.1 * η μν.2 μν.2 * ∂_ μν.1 φ x μν.2 ^ 2 - ∂_ μν.1 φ x μν.2 * ∂_ μν.2 φ x μν.1 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
ring All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
have hF_mul := HasVarAdjDerivAt.const_mul _ _ A
(HasVarAdjDerivAt.congr (G := fun A' x => ∑ μ, ∑ ν, F (μ, ν) A' x)
(HasVarAdjDerivAt.sum _ _ A hA F_h)
(fun φ _ => funext fun x => Fintype.sum_prod_type fun μν => F μν φ x))
(c := -1/(2 * 𝓕.μ₀)) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.valhF_mul:HasVarAdjDerivAt (fun φ x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) φ x)
(fun ψ x =>
∑ i,
(-(fderiv ℝ
(fun x' =>
(fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x' * ∂_ i.1 A.val x' i.2)
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ
(fun x' =>
∂_ i.1 A.val x' i.2 * (fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x')
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(-(fderiv ℝ (fun x' => (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x' * ∂_ i.2 A.val x' i.1) x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ (fun x' => ∂_ i.1 A.val x' i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x)
(Lorentz.Vector.basis i.2) •
Lorentz.Vector.basis i.1)))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
change HasVarGradientAt (fun A' x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) A' x) _ A d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.valhF_mul:HasVarAdjDerivAt (fun φ x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) φ x)
(fun ψ x =>
∑ i,
(-(fderiv ℝ
(fun x' =>
(fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x' * ∂_ i.1 A.val x' i.2)
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ
(fun x' =>
∂_ i.1 A.val x' i.2 * (fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x')
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(-(fderiv ℝ (fun x' => (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x' * ∂_ i.2 A.val x' i.1) x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ (fun x' => ∂_ i.1 A.val x' i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x)
(Lorentz.Vector.basis i.2) •
Lorentz.Vector.basis i.1)))
A.val⊢ HasVarGradientAt (fun A' x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) A' x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
exact HasVarGradientAt.intro _ hF_mul rfl All goals completed! 🐙B.2. Writing the variational gradient as a sums over double derivatives of the potential
We rewrite the variational gradient as a simple double sum over second derivatives of the potential.
lemma gradKineticTerm_eq_sum_sum {d} {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (x : SpaceTime d) (ha : ContDiff ℝ ∞ A) :
A.gradKineticTerm 𝓕 x = ∑ (ν : (Fin 1 ⊕ Fin d)), ∑ (μ : (Fin 1 ⊕ Fin d)),
(1 / (𝓕.μ₀) * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A x' ν) x -
∂_ μ (fun x' => ∂_ ν A x' μ) x)) • Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ gradKineticTerm 𝓕 A x =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
rw [gradKineticTerm_eq_sum_fderiv A ha d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
x =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
x =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
x =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
calc _
_ = ∑ (μ : (Fin 1 ⊕ Fin d)), ∑ (ν : (Fin 1 ⊕ Fin d)),
(- (fderiv ℝ (fun x' => (η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) * ∂_ μ A x' ν) x)
(Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => (η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) * ∂_ μ A x' ν) x)
(Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A x' μ) x) (Lorentz.Vector.basis μ)
• Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A x' ν) x) (Lorentz.Vector.basis ν)
• Lorentz.Vector.basis μ)) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
x =
∑ μ,
∑ ν,
(-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ))
dsimp d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ μν,
(-(fderiv ℝ (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * (-1 / (2 * 𝓕.μ₀) * 1) * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (η μν.1 μν.1 * η μν.2 μν.2 * (-1 / (2 * 𝓕.μ₀) * 1))) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * 1 * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (-1 / (2 * 𝓕.μ₀) * 1)) x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1)) =
∑ μ,
∑ ν,
(-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ))
rw [Fintype.sum_prod_type d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
∑ y,
(-(fderiv ℝ
(fun x' =>
η (x_1, y).1 (x_1, y).1 * η (x_1, y).2 (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1) *
∂_ (x_1, y).1 A.val x' (x_1, y).2)
x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(fderiv ℝ
(fun x' =>
∂_ (x_1, y).1 A.val x' (x_1, y).2 *
(η (x_1, y).1 (x_1, y).1 * η (x_1, y).2 (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1)))
x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * 1 * ∂_ (x_1, y).2 A.val x' (x_1, y).1) x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(fderiv ℝ (fun x' => ∂_ (x_1, y).1 A.val x' (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1)) x)
(Lorentz.Vector.basis (x_1, y).2) •
Lorentz.Vector.basis (x_1, y).1)) =
∑ μ,
∑ ν,
(-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ)) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
∑ y,
(-(fderiv ℝ
(fun x' =>
η (x_1, y).1 (x_1, y).1 * η (x_1, y).2 (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1) *
∂_ (x_1, y).1 A.val x' (x_1, y).2)
x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(fderiv ℝ
(fun x' =>
∂_ (x_1, y).1 A.val x' (x_1, y).2 *
(η (x_1, y).1 (x_1, y).1 * η (x_1, y).2 (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1)))
x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * 1 * ∂_ (x_1, y).2 A.val x' (x_1, y).1) x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(fderiv ℝ (fun x' => ∂_ (x_1, y).1 A.val x' (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1)) x)
(Lorentz.Vector.basis (x_1, y).2) •
Lorentz.Vector.basis (x_1, y).1)) =
∑ μ,
∑ ν,
(-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ))] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
∑ y,
(-(fderiv ℝ
(fun x' =>
η (x_1, y).1 (x_1, y).1 * η (x_1, y).2 (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1) *
∂_ (x_1, y).1 A.val x' (x_1, y).2)
x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(fderiv ℝ
(fun x' =>
∂_ (x_1, y).1 A.val x' (x_1, y).2 *
(η (x_1, y).1 (x_1, y).1 * η (x_1, y).2 (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1)))
x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * 1 * ∂_ (x_1, y).2 A.val x' (x_1, y).1) x)
(Lorentz.Vector.basis (x_1, y).1) •
Lorentz.Vector.basis (x_1, y).2 +
-(fderiv ℝ (fun x' => ∂_ (x_1, y).1 A.val x' (x_1, y).2 * (-1 / (2 * 𝓕.μ₀) * 1)) x)
(Lorentz.Vector.basis (x_1, y).2) •
Lorentz.Vector.basis (x_1, y).1)) =
∑ μ,
∑ ν,
(-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ))
refine Finset.sum_congr rfl fun μ _ => Finset.sum_congr rfl fun ν _ => ?_ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ -(fderiv ℝ (fun x' => η (μ, ν).1 (μ, ν).1 * η (μ, ν).2 (μ, ν).2 * (-1 / (2 * 𝓕.μ₀) * 1) * ∂_ (μ, ν).1 A.val x' (μ, ν).2)
x)
(Lorentz.Vector.basis (μ, ν).1) •
Lorentz.Vector.basis (μ, ν).2 +
-(fderiv ℝ
(fun x' =>
∂_ (μ, ν).1 A.val x' (μ, ν).2 * (η (μ, ν).1 (μ, ν).1 * η (μ, ν).2 (μ, ν).2 * (-1 / (2 * 𝓕.μ₀) * 1)))
x)
(Lorentz.Vector.basis (μ, ν).1) •
Lorentz.Vector.basis (μ, ν).2 +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * 1 * ∂_ (μ, ν).2 A.val x' (μ, ν).1) x) (Lorentz.Vector.basis (μ, ν).1) •
Lorentz.Vector.basis (μ, ν).2 +
-(fderiv ℝ (fun x' => ∂_ (μ, ν).1 A.val x' (μ, ν).2 * (-1 / (2 * 𝓕.μ₀) * 1)) x)
(Lorentz.Vector.basis (μ, ν).2) •
Lorentz.Vector.basis (μ, ν).1) =
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ)
simp only [mul_one, neg_smul, neg_add_rev, neg_neg, mul_neg] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ -((fderiv ℝ (fun x' => η μ μ * η ν ν * (-1 / (2 * 𝓕.μ₀)) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν) +
-((fderiv ℝ (fun x' => ∂_ μ A.val x' ν * (η μ μ * η ν ν * (-1 / (2 * 𝓕.μ₀)))) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν) +
((fderiv ℝ (fun x' => ∂_ μ A.val x' ν * (-1 / (2 * 𝓕.μ₀))) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν) =
-((fderiv ℝ (fun x' => -(η μ μ * η ν ν) / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν) +
-((fderiv ℝ (fun x' => -(η μ μ * η ν ν) / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν) +
((fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν)
ring_nf All goals completed! 🐙
_ = ∑ (μ : (Fin 1 ⊕ Fin d)), ∑ (ν : (Fin 1 ⊕ Fin d)),
((- 2 * (fderiv ℝ (fun x' => (η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) * ∂_ μ A x' ν) x)
(Lorentz.Vector.basis μ) +
((fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A x' μ) x) (Lorentz.Vector.basis μ))) •
Lorentz.Vector.basis ν +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ μ,
∑ ν,
(-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) •
Lorentz.Vector.basis μ)) =
∑ μ,
∑ ν,
((-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ)
refine Finset.sum_congr rfl fun μ _ => Finset.sum_congr rfl fun ν _ => ?_ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ -(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) •
Lorentz.Vector.basis ν +
-(-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν +
-(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ) =
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ
module All goals completed! 🐙
_ = ∑ (μ : (Fin 1 ⊕ Fin d)), ∑ (ν : (Fin 1 ⊕ Fin d)),
((- 2 * (fderiv ℝ (fun x' => (η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) * ∂_ μ A x' ν) x)
(Lorentz.Vector.basis μ) +
2 * ((fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A x' μ) x) (Lorentz.Vector.basis μ)))) •
Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ μ,
∑ ν,
((-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ) =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν
conv_lhs => enter [2, μ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin d| ∑ ν,
((-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis ν) • Lorentz.Vector.basis μ); rw [Finset.sum_add_distrib] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin d| ∑ x_1,
(-2 * (fderiv ℝ (fun x' => η μ μ * η x_1 x_1 * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' x_1) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis x_1 +
∑ x_1,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' x_1) x) (Lorentz.Vector.basis x_1) • Lorentz.Vector.basis μ
rw [Finset.sum_add_distrib d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
∑ x_2,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η x_2 x_2 * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x)
(Lorentz.Vector.basis x_1) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis x_2 +
∑ x_1,
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x) (Lorentz.Vector.basis x_2) •
Lorentz.Vector.basis x_1 =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
∑ x_2,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η x_2 x_2 * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x)
(Lorentz.Vector.basis x_1) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis x_2 +
∑ x_1,
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x) (Lorentz.Vector.basis x_2) •
Lorentz.Vector.basis x_1 =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
∑ x_2,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η x_2 x_2 * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x)
(Lorentz.Vector.basis x_1) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis x_2 +
∑ x_1,
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x) (Lorentz.Vector.basis x_2) •
Lorentz.Vector.basis x_1 =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν
conv_lhs => enter [2] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val| ∑ x_1,
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x) (Lorentz.Vector.basis x_2) • Lorentz.Vector.basis x_1; rw [Finset.sum_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val| ∑ y,
∑ x_1,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' y) x) (Lorentz.Vector.basis y) • Lorentz.Vector.basis x_1
rw [← Finset.sum_add_distrib d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
(∑ x_2,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η x_2 x_2 * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x)
(Lorentz.Vector.basis x_1) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis x_2 +
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1) •
Lorentz.Vector.basis x_2) =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
(∑ x_2,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η x_2 x_2 * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x)
(Lorentz.Vector.basis x_1) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis x_2 +
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1) •
Lorentz.Vector.basis x_2) =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ x_1,
(∑ x_2,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η x_2 x_2 * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' x_2) x)
(Lorentz.Vector.basis x_1) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis x_2 +
∑ x_2,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_2 A.val x' x_1) x) (Lorentz.Vector.basis x_1) •
Lorentz.Vector.basis x_2) =
∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν
conv_lhs => enter [2, μ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin d| ∑ x_1,
(-2 * (fderiv ℝ (fun x' => η μ μ * η x_1 x_1 * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' x_1) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis x_1 +
∑ x_1,
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis x_1; rw [← Finset.sum_add_distrib] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin d| ∑ x_1,
((-2 * (fderiv ℝ (fun x' => η μ μ * η x_1 x_1 * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' x_1) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis x_1 +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis x_1)
refine Finset.sum_congr rfl fun μ _ => Finset.sum_congr rfl fun ν _ => ?_ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) • Lorentz.Vector.basis ν =
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν
rw [← add_smul d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valμ:Fin 1 ⊕ Fin dx✝¹:μ ∈ Finset.univν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν
ring_nf All goals completed! 🐙
_ = ∑ (ν : (Fin 1 ⊕ Fin d)), ∑ (μ : (Fin 1 ⊕ Fin d)),
(1 / (𝓕.μ₀) * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A x' ν) x -
∂_ μ (fun x' => ∂_ ν A x' μ) x)) • Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ μ,
∑ ν,
(-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
rw [Finset.sum_comm d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ y,
∑ x_1,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η y y * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' y) x)
(Lorentz.Vector.basis x_1) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ y A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis y =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ y,
∑ x_1,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η y y * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' y) x)
(Lorentz.Vector.basis x_1) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ y A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis y =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ y,
∑ x_1,
(-2 *
(fderiv ℝ (fun x' => η x_1 x_1 * η y y * -1 / (2 * 𝓕.μ₀) * ∂_ x_1 A.val x' y) x)
(Lorentz.Vector.basis x_1) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ y A.val x' x_1) x) (Lorentz.Vector.basis x_1)) •
Lorentz.Vector.basis y =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
refine Finset.sum_congr rfl fun ν _ => Finset.sum_congr rfl fun μ _ => ?_ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-2 * (fderiv ℝ (fun x' => η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀) * ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * (fderiv ℝ (fun x' => -1 / (2 * 𝓕.μ₀) * ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
rw [fderiv_const_mul (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ DifferentiableAt ℝ (fun x' => ∂_ μ A.val x' ν) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-2 * ((η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * ((-1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν fun_prop All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-2 * ((η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * ((-1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν), fderiv_const_mul (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ DifferentiableAt ℝ (fun x' => ∂_ ν A.val x' μ) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-2 * ((η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * ((-1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν fun_prop All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-2 * ((η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * ((-1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-2 * ((η μ μ * η ν ν * -1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ μ A.val x' ν) x) (Lorentz.Vector.basis μ) +
2 * ((-1 / (2 * 𝓕.μ₀)) • fderiv ℝ (fun x' => ∂_ ν A.val x' μ) x) (Lorentz.Vector.basis μ)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
simp [SpaceTime.deriv_eq] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (-(2 *
(-(η μ μ * η ν ν) / (2 * 𝓕.μ₀) *
(fderiv ℝ (fun x' => (fderiv ℝ A.val x') (Lorentz.Vector.basis μ) ν) x) (Lorentz.Vector.basis μ))) +
2 *
(-1 / (2 * 𝓕.μ₀) *
(fderiv ℝ (fun x' => (fderiv ℝ A.val x') (Lorentz.Vector.basis ν) μ) x) (Lorentz.Vector.basis μ))) •
Lorentz.Vector.basis ν =
(𝓕.μ₀⁻¹ *
(η μ μ * η ν ν *
(fderiv ℝ (fun x' => (fderiv ℝ A.val x') (Lorentz.Vector.basis μ) ν) x) (Lorentz.Vector.basis μ) -
(fderiv ℝ (fun x' => (fderiv ℝ A.val x') (Lorentz.Vector.basis ν) μ) x) (Lorentz.Vector.basis μ))) •
Lorentz.Vector.basis ν
ring_nf All goals completed! 🐙B.3. Variational gradient as a sums over fieldStrengthMatrix
We rewrite the variational gradient as a simple double sum over the fieldStrengthMatrix.
lemma gradKineticTerm_eq_fieldStrength {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(x : SpaceTime d) (ha : ContDiff ℝ ∞ A) :
A.gradKineticTerm 𝓕 x = ∑ (ν : (Fin 1 ⊕ Fin d)), (1/𝓕.μ₀ * η ν ν) •
(∑ (μ : (Fin 1 ⊕ Fin d)), (∂_ μ (A.fieldStrengthMatrix · (μ, ν)) x))
• Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ gradKineticTerm 𝓕 A x =
∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
calc _
_ = ∑ (ν : (Fin 1 ⊕ Fin d)), ∑ (μ : (Fin 1 ⊕ Fin d)),
(1/𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A x' ν) x -
∂_ μ (fun x' => ∂_ ν A x' μ) x)) • Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ gradKineticTerm 𝓕 A x =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
rw [gradKineticTerm_eq_sum_sum A x ha d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν All goals completed! 🐙] All goals completed! 🐙
_ = ∑ (ν : (Fin 1 ⊕ Fin d)), ∑ (μ : (Fin 1 ⊕ Fin d)),
((1/𝓕.μ₀ * η ν ν) * (η μ μ * ∂_ μ (fun x' => ∂_ μ A x' ν) x -
η ν ν * ∂_ μ (fun x' => ∂_ ν A x' μ) x)) • Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν =
∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * η ν ν * (η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
apply Finset.sum_congr rfl (fun ν _ => ?_) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ,
(1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν =
∑ μ,
(1 / 𝓕.μ₀ * η ν ν * (η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
apply Finset.sum_congr rfl (fun μ _ => ?_) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν * (η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν
congr 1 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ 1 / 𝓕.μ₀ * (η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - ∂_ μ (fun x' => ∂_ ν A.val x' μ) x) =
1 / 𝓕.μ₀ * η ν ν * (η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)
ring_nf e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ 𝓕.μ₀⁻¹ * η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - 𝓕.μ₀⁻¹ * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x =
𝓕.μ₀⁻¹ * η μ μ * η ν ν * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - 𝓕.μ₀⁻¹ * η ν ν ^ 2 * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x
simp All goals completed! 🐙
_ = ∑ (ν : (Fin 1 ⊕ Fin d)), ∑ (μ : (Fin 1 ⊕ Fin d)),
((1/𝓕.μ₀ * η ν ν) * (∂_ μ (A.fieldStrengthMatrix · (μ, ν)) x)) •
Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ ν,
∑ μ,
(1 / 𝓕.μ₀ * η ν ν * (η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν =
∑ ν, ∑ μ, (1 / 𝓕.μ₀ * η ν ν * ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
refine Finset.sum_congr rfl fun ν _ => Finset.sum_congr rfl fun μ _ => ?_ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν * (η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x)) •
Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν * ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
congr 2 e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ η μ μ * ∂_ μ (fun x' => ∂_ μ A.val x' ν) x - η ν ν * ∂_ μ (fun x' => ∂_ ν A.val x' μ) x =
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
conv_rhs =>
simp only [toFieldStrength_basis_repr_apply_eq_single] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ| ∂_ μ (fun x => η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) x
rw [SpaceTime.deriv_eq, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ| (fderiv ℝ (fun x => η μ μ * ∂_ μ A.val x ν - η ν ν * ∂_ ν A.val x μ) x) (Lorentz.Vector.basis μ) fderiv_fun_sub (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ DifferentiableAt ℝ (fun x => η μ μ * ∂_ μ A.val x ν) x fun_prop All goals completed! 🐙) (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ DifferentiableAt ℝ (fun x => η ν ν * ∂_ ν A.val x μ) x fun_prop All goals completed! 🐙),
fderiv_const_mul (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ DifferentiableAt ℝ (fun x => ∂_ μ A.val x ν) x fun_prop All goals completed! 🐙), fderiv_const_mul (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ DifferentiableAt ℝ (fun x => ∂_ ν A.val x μ) x fun_prop All goals completed! 🐙)]
simp [SpaceTime.deriv_eq] All goals completed! 🐙
_ = ∑ (ν : (Fin 1 ⊕ Fin d)), (1/𝓕.μ₀ * η ν ν) •
(∑ (μ : (Fin 1 ⊕ Fin d)), (∂_ μ (A.fieldStrengthMatrix · (μ, ν)) x))
• Lorentz.Vector.basis ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ ν, ∑ μ, (1 / 𝓕.μ₀ * η ν ν * ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
apply Finset.sum_congr rfl (fun ν _ => ?_) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ, (1 / 𝓕.μ₀ * η ν ν * ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
rw [← Finset.sum_smul, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (∑ i, 1 / 𝓕.μ₀ * η ν ν * ∂_ i (fun x => (A.fieldStrengthMatrix x) (i, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν All goals completed! 🐙 ← Finset.mul_sum, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν * ∑ i, ∂_ i (fun x => (A.fieldStrengthMatrix x) (i, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν All goals completed! 🐙 ← smul_smul d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ i, ∂_ i (fun x => (A.fieldStrengthMatrix x) (i, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν All goals completed! 🐙] All goals completed! 🐙B.4. Variational gradient in terms of the Gauss's and Ampère laws
We rewrite the variational gradient in terms of the electric and magnetic fields, explicitly relating it to Gauss's law and Ampère's law.
lemma gradKineticTerm_eq_electric_magnetic {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(x : SpaceTime d) (ha : ContDiff ℝ ∞ A) :
A.gradKineticTerm 𝓕 x =
(1/(𝓕.μ₀ * 𝓕.c) * Space.div (A.electricField 𝓕.c (x.time 𝓕.c)) x.space) •
Lorentz.Vector.basis (Sum.inl 0) +
∑ i, (𝓕.μ₀⁻¹ * (1 / 𝓕.c ^ 2 * ∂ₜ (fun t => A.electricField 𝓕.c t x.space) (x.time 𝓕.c) i-
∑ j, Space.deriv j (A.magneticFieldMatrix 𝓕.c (x.time 𝓕.c) · (j, i)) x.space)) •
Lorentz.Vector.basis (Sum.inr i) := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ gradKineticTerm 𝓕 A x =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i)
rw [gradKineticTerm_eq_fieldStrength A x ha, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) +
∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) Fintype.sum_sum_type, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ a₁,
(1 / 𝓕.μ₀ * η (Sum.inl a₁) (Sum.inl a₁)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl a₁)) x) • Lorentz.Vector.basis (Sum.inl a₁) +
∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) +
∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) Fin.sum_univ_one d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) +
∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) +
∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i)] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) +
∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i)
congr 1 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0)e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i)
· e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) • Lorentz.Vector.basis (Sum.inl 0) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) rw [smul_smul e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) •
Lorentz.Vector.basis (Sum.inl 0) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) •
Lorentz.Vector.basis (Sum.inl 0) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0)]e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x) •
Lorentz.Vector.basis (Sum.inl 0) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0)
congr 1 e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ 1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x =
1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)
rw [div_electricField_eq_fieldStrengthMatrix e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ 1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x =
1 / (𝓕.μ₀ * 𝓕.c.val) *
(𝓕.c.val *
∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x)))e_a.e_a.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ContDiff ℝ 2 A.val e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ 1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x =
1 / (𝓕.μ₀ * 𝓕.c.val) *
(𝓕.c.val *
∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x)))e_a.e_a.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ContDiff ℝ 2 A.val]e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ 1 / 𝓕.μ₀ * η (Sum.inl 0) (Sum.inl 0) * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x =
1 / (𝓕.μ₀ * 𝓕.c.val) *
(𝓕.c.val *
∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x)))e_a.e_a.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ContDiff ℝ 2 A.val
simp only [one_div, Fin.isValue, inl_0_inl_0, mul_one, mul_inv_rev,
toTimeAndSpace_symm_apply_time_space] e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ 𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x =
𝓕.c.val⁻¹ * 𝓕.μ₀⁻¹ * (𝓕.c.val * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inl 0)) x)e_a.e_a.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ContDiff ℝ 2 A.val
field_simp e_a.e_a.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ContDiff ℝ 2 A.val
apply ha.of_le (ENat.LEInfty.out) All goals completed! 🐙
· e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ ∑ a₂,
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂) =
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) congr e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.val⊢ (fun a₂ =>
(1 / 𝓕.μ₀ * η (Sum.inr a₂) (Sum.inr a₂)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr a₂)) x) • Lorentz.Vector.basis (Sum.inr a₂)) =
fun i =>
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i)
funext j e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ (1 / 𝓕.μ₀ * η (Sum.inr j) (Sum.inr j)) •
(∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j) =
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
∑ j_1, Space.deriv j_1 (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j_1, j)) (space x))) •
Lorentz.Vector.basis (Sum.inr j)
simp only [one_div, inr_i_inr_i, mul_neg, mul_one, neg_smul] e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j)) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
∑ j_1, Space.deriv j_1 (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j_1, j)) (space x))) •
Lorentz.Vector.basis (Sum.inr j)
rw [curl_magneticFieldMatrix_eq_electricField_fieldStrengthMatrix, e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j)) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val smul_smul, e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -((𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j)) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.vale_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val ← neg_smul e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.vale_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val]e_a.e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) • Lorentz.Vector.basis (Sum.inr j) =
(𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j))
((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))) •
Lorentz.Vector.basis (Sum.inr j)e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val
congr e_a.e_f.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ -(𝓕.μ₀⁻¹ * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) x) =
𝓕.μ₀⁻¹ *
((𝓕.c.val ^ 2)⁻¹ * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j -
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp j +
∑ μ,
∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, Sum.inr j)) ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))))e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val
simp only [one_div, toTimeAndSpace_symm_apply_time_space, sub_add_cancel_left, mul_neg] e_a.e_f.hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dha:ContDiff ℝ ∞ A.valj:Fin d⊢ ContDiff ℝ 2 A.val
apply ha.of_le (ENat.LEInfty.out) All goals completed! 🐙
lemma gradKineticTerm_eq_electric_magnetic_three {𝓕 : FreeSpace} (A : ElectromagneticPotential)
(x : SpaceTime) (ha : ContDiff ℝ ∞ A) :
A.gradKineticTerm 𝓕 x =
(1/(𝓕.μ₀ * 𝓕.c) * Space.div (A.electricField 𝓕.c (x.time 𝓕.c)) x.space) •
Lorentz.Vector.basis (Sum.inl 0) +
∑ i, (𝓕.μ₀⁻¹ * (1 / 𝓕.c ^ 2 * ∂ₜ (fun t => A.electricField 𝓕.c t x.space) (x.time 𝓕.c) i-
Space.curl (A.magneticField 𝓕.c (x.time 𝓕.c)) x.space i)) •
Lorentz.Vector.basis (Sum.inr i) := by 𝓕:FreeSpaceA:ElectromagneticPotentialx:SpaceTimeha:ContDiff ℝ ∞ (A.val 3)⊢ gradKineticTerm 𝓕 A x =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
(curl (magneticField 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp i)) •
Lorentz.Vector.basis (Sum.inr i)
rw [gradKineticTerm_eq_electric_magnetic A x ha 𝓕:FreeSpaceA:ElectromagneticPotentialx:SpaceTimeha:ContDiff ℝ ∞ (A.val 3)⊢ (1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
(curl (magneticField 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp i)) •
Lorentz.Vector.basis (Sum.inr i) 𝓕:FreeSpaceA:ElectromagneticPotentialx:SpaceTimeha:ContDiff ℝ ∞ (A.val 3)⊢ (1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
(curl (magneticField 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp i)) •
Lorentz.Vector.basis (Sum.inr i)] 𝓕:FreeSpaceA:ElectromagneticPotentialx:SpaceTimeha:ContDiff ℝ ∞ (A.val 3)⊢ (1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
∑ j, Space.deriv j (fun x_1 => magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) x_1 (j, i)) (space x))) •
Lorentz.Vector.basis (Sum.inr i) =
(1 / (𝓕.μ₀ * 𝓕.c.val) * Space.div (electricField 𝓕.c A ((time 𝓕.c) x)) (space x)) • Lorentz.Vector.basis (Sum.inl 0) +
∑ i,
(𝓕.μ₀⁻¹ *
(1 / 𝓕.c.val ^ 2 * (∂ₜ (fun t => electricField 𝓕.c A t (space x)) ((time 𝓕.c) x)).ofLp i -
(curl (magneticField 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp i)) •
Lorentz.Vector.basis (Sum.inr i)
simp only [magneticField_curl_eq_magneticFieldMatrix A (ha.of_le ENat.LEInfty.out)] All goals completed! 🐙B.5. Linearity properties of the variational gradient
lemma gradKineticTerm_add {d} {𝓕 : FreeSpace} (A1 A2 : ElectromagneticPotential d)
(hA1 : ContDiff ℝ ∞ A1) (hA2 : ContDiff ℝ ∞ A2) :
(A1 + A2).gradKineticTerm 𝓕 = A1.gradKineticTerm 𝓕 + A2.gradKineticTerm 𝓕 := by d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.val⊢ gradKineticTerm 𝓕 (A1 + A2) = gradKineticTerm 𝓕 A1 + gradKineticTerm 𝓕 A2
funext x d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ gradKineticTerm 𝓕 (A1 + A2) x = (gradKineticTerm 𝓕 A1 + gradKineticTerm 𝓕 A2) x
rw [gradKineticTerm_eq_fieldStrength (A1 + A2) x (hA1.add hA2) d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(gradKineticTerm 𝓕 A1 + gradKineticTerm 𝓕 A2) x d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(gradKineticTerm 𝓕 A1 + gradKineticTerm 𝓕 A2) x] d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(gradKineticTerm 𝓕 A1 + gradKineticTerm 𝓕 A2) x
simp only [Pi.add_apply] d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
gradKineticTerm 𝓕 A1 x + gradKineticTerm 𝓕 A2 x
rw [gradKineticTerm_eq_fieldStrength A1 x hA1, d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν +
gradKineticTerm 𝓕 A2 x d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
((1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 +
(1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1) gradKineticTerm_eq_fieldStrength A2 x hA2, d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν +
∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
((1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 +
(1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1)
← Finset.sum_add_distrib d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
((1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 +
(1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1) d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
((1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 +
(1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1)] d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
((1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 +
(1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1)
apply Finset.sum_congr rfl (fun ν _ => ?_) d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν +
(1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
rw [← smul_add, d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
((∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν +
(∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν) d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
(∑ x_1,
(∂_ x_1 (fun x => (A1.fieldStrengthMatrix x) (x_1, ν)) x +
∂_ x_1 (fun x => (A2.fieldStrengthMatrix x) (x_1, ν)) x)) •
Lorentz.Vector.basis ν ← add_smul, d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
(∑ μ, ∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x +
∑ μ, ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
(∑ x_1,
(∂_ x_1 (fun x => (A1.fieldStrengthMatrix x) (x_1, ν)) x +
∂_ x_1 (fun x => (A2.fieldStrengthMatrix x) (x_1, ν)) x)) •
Lorentz.Vector.basis ν ← Finset.sum_add_distrib d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
(∑ x_1,
(∂_ x_1 (fun x => (A1.fieldStrengthMatrix x) (x_1, ν)) x +
∂_ x_1 (fun x => (A2.fieldStrengthMatrix x) (x_1, ν)) x)) •
Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
(∑ x_1,
(∂_ x_1 (fun x => (A1.fieldStrengthMatrix x) (x_1, ν)) x +
∂_ x_1 (fun x => (A2.fieldStrengthMatrix x) (x_1, ν)) x)) •
Lorentz.Vector.basis ν] d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(1 / 𝓕.μ₀ * η ν ν) •
(∑ x_1,
(∂_ x_1 (fun x => (A1.fieldStrengthMatrix x) (x_1, ν)) x +
∂_ x_1 (fun x => (A2.fieldStrengthMatrix x) (x_1, ν)) x)) •
Lorentz.Vector.basis ν
congr e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (fun μ => ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) = fun x_1 =>
∂_ x_1 (fun x => (A1.fieldStrengthMatrix x) (x_1, ν)) x + ∂_ x_1 (fun x => (A2.fieldStrengthMatrix x) (x_1, ν)) x
funext μ e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ ∂_ μ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x =
∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x + ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x
rw [SpaceTime.deriv_eq, e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
∂_ μ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x + ∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) SpaceTime.deriv_eq, e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
∂_ μ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) xe_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) SpaceTime.deriv_eq e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)]e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => ((A1 + A2).fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)
conv_lhs =>
enter [1, 2, x] d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx✝¹:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx:SpaceTime d| ((A1 + A2).fieldStrengthMatrix x) (μ, ν)
rw [fieldStrengthMatrix_add _ _ _ (hA1.differentiable (by d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx✝¹:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ ∞ ≠ 0 simp All goals completed! 🐙))
(hA2.differentiable (by d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx✝¹:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx:SpaceTime d⊢ ∞ ≠ 0 simp All goals completed! 🐙))]
simp [Finsupp.coe_add, Pi.add_apply] d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx✝¹:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx:SpaceTime d| (A1.fieldStrengthMatrix x) (μ, ν) + (A2.fieldStrengthMatrix x) (μ, ν)
rw [fderiv_fun_add
(fieldStrengthMatrix_differentiable (hA1.of_le ENat.LEInfty.out)).differentiableAt
(fieldStrengthMatrix_differentiable (hA2.of_le ENat.LEInfty.out)).differentiableAt e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x + fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x)
(Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x + fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x)
(Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)]e_a.e_a.e_f d:ℕ𝓕:FreeSpaceA1:ElectromagneticPotential dA2:ElectromagneticPotential dhA1:ContDiff ℝ ∞ A1.valhA2:ContDiff ℝ ∞ A2.valx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univμ:Fin 1 ⊕ Fin d⊢ (fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x + fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x)
(Lorentz.Vector.basis μ) =
(fderiv ℝ (fun x => (A1.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) +
(fderiv ℝ (fun x => (A2.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)
rfl All goals completed! 🐙
lemma gradKineticTerm_smul {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(hA : ContDiff ℝ ∞ A) (c : ℝ) :
(c • A).gradKineticTerm 𝓕 = c • A.gradKineticTerm 𝓕 := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝ⊢ gradKineticTerm 𝓕 (c • A) = c • gradKineticTerm 𝓕 A
funext x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ gradKineticTerm 𝓕 (c • A) x = (c • gradKineticTerm 𝓕 A) x
rw [gradKineticTerm_eq_fieldStrength (c • A) x (hA.const_smul c) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(c • gradKineticTerm 𝓕 A) x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(c • gradKineticTerm 𝓕 A) x] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(c • gradKineticTerm 𝓕 A) x
simp only [Pi.smul_apply] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
c • gradKineticTerm 𝓕 A x
rw [gradKineticTerm_eq_fieldStrength A x hA, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
c • ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
c • (1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 Finset.smul_sum d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
c • (1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
c • (1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime d⊢ ∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
∑ x_1,
c • (1 / 𝓕.μ₀ * η x_1 x_1) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, x_1)) x) • Lorentz.Vector.basis x_1
apply Finset.sum_congr rfl (fun ν _ => ?_) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
c • (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
conv_rhs => rw [smul_comm] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ| (1 / 𝓕.μ₀ * η ν ν) • c • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
congr 1 e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
c • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
rw [smul_smul e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(c * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(c * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν]e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ (∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν =
(c * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν
congr e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x =
c * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
rw [Finset.mul_sum e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x =
∑ i, c * ∂_ i (fun x => (A.fieldStrengthMatrix x) (i, ν)) x e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x =
∑ i, c * ∂_ i (fun x => (A.fieldStrengthMatrix x) (i, ν)) x]e_a.e_a d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝:ν ∈ Finset.univ⊢ ∑ μ, ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x =
∑ i, c * ∂_ i (fun x => (A.fieldStrengthMatrix x) (i, ν)) x
apply Finset.sum_congr rfl (fun μ _ => ?_) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ ∂_ μ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) x = c * ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
conv_rhs =>
rw [SpaceTime.deriv_eq] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ| c * (fderiv ℝ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)
change (c • fderiv ℝ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ| (c • fderiv ℝ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) (Lorentz.Vector.basis μ)
rw [← fderiv_const_smul
(fieldStrengthMatrix_differentiable <| hA.of_le (ENat.LEInfty.out)).differentiableAt,
← SpaceTime.deriv_eq] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ| ∂_ μ (c • fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
congr e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univ⊢ (fun x => ((c • A).fieldStrengthMatrix x) (μ, ν)) = c • fun x => (A.fieldStrengthMatrix x) (μ, ν)
funext x e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx✝²:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univx:SpaceTime d⊢ ((c • A).fieldStrengthMatrix x) (μ, ν) = (c • fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
rw [fieldStrengthMatrix_smul _ _ _ (hA.differentiable (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx✝²:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univx:SpaceTime d⊢ ∞ ≠ 0 e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx✝²:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univx:SpaceTime d⊢ (c • A.fieldStrengthMatrix x) (μ, ν) = (c • fun x => (A.fieldStrengthMatrix x) (μ, ν)) x simp All goals completed! 🐙e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx✝²:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univx:SpaceTime d⊢ (c • A.fieldStrengthMatrix x) (μ, ν) = (c • fun x => (A.fieldStrengthMatrix x) (μ, ν)) x))]e_f d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valc:ℝx✝²:SpaceTime dν:Fin 1 ⊕ Fin dx✝¹:ν ∈ Finset.univμ:Fin 1 ⊕ Fin dx✝:μ ∈ Finset.univx:SpaceTime d⊢ (c • A.fieldStrengthMatrix x) (μ, ν) = (c • fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
rfl All goals completed! 🐙B.6. HasVarGradientAt for the variational gradient
lemma kineticTerm_hasVarGradientAt {d} {𝓕 : FreeSpace} (A : ElectromagneticPotential d)
(hA : ContDiff ℝ ∞ A) :
HasVarGradientAt (fun A => kineticTerm 𝓕 ⟨A⟩) (A.gradKineticTerm 𝓕) A := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun A => kineticTerm 𝓕 { val := A }) (gradKineticTerm 𝓕 A) A.val
rw [gradKineticTerm_eq_sum_fderiv A hA d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun A => kineticTerm 𝓕 { val := A })
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun A => kineticTerm 𝓕 { val := A })
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun A => kineticTerm 𝓕 { val := A })
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
change HasVarGradientAt (fun A' x => ElectromagneticPotential.kineticTerm 𝓕 ⟨A'⟩ x) _ A d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val⊢ HasVarGradientAt (fun A' x => kineticTerm 𝓕 { val := A' } x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
conv => d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.val| HasVarGradientAt (fun A' x => kineticTerm 𝓕 { val := A' } x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
enter [1, A', x] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valA':SpaceTime d → Lorentz.Vector dx:SpaceTime d| kineticTerm 𝓕 { val := A' } x
rw [kineticTerm_eq_sum_potential] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valA':SpaceTime d → Lorentz.Vector dx:SpaceTime d| -1 / (2 * 𝓕.μ₀) *
∑ μ, ∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ)
let F : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) →
SpaceTime d → ℝ := fun (μ, ν) A' x =>
(η μ μ * η ν ν * ∂_ μ A' x ν ^ 2 - ∂_ μ A' x ν * ∂_ ν A' x μ) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μ⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
have F_h (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)) :=
HasVarAdjDerivAt.congr (G := F μν)
(HasVarAdjDerivAt.add _ _ _ _ _
(HasVarAdjDerivAt.const_mul _ _ A
(HasVarAdjDerivAt.mul _ _ _ _ A (deriv_hasVarAdjDerivAt μν.1 μν.2 A hA)
(deriv_hasVarAdjDerivAt μν.1 μν.2 A hA)) (c := η μν.1 μν.1 * η μν.2 μν.2))
(HasVarAdjDerivAt.neg _ _ A
(HasVarAdjDerivAt.mul _ _ _ _ A (deriv_hasVarAdjDerivAt μν.1 μν.2 A hA)
(deriv_hasVarAdjDerivAt μν.2 μν.1 A hA))))
(fun φ _ => funext fun x => by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)φ:SpaceTime d → Lorentz.Vector dx✝:ContDiff ℝ ∞ φx:SpaceTime d⊢ η μν.1 μν.1 * η μν.2 μν.2 * (∂_ μν.1 φ x μν.2 * ∂_ μν.1 φ x μν.2) + -(∂_ μν.1 φ x μν.2 * ∂_ μν.2 φ x μν.1) = F μν φ x d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
simp [F] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μμν:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)φ:SpaceTime d → Lorentz.Vector dx✝:ContDiff ℝ ∞ φx:SpaceTime d⊢ η μν.1 μν.1 * η μν.2 μν.2 * (∂_ μν.1 φ x μν.2 * ∂_ μν.1 φ x μν.2) + -(∂_ μν.1 φ x μν.2 * ∂_ μν.2 φ x μν.1) =
η μν.1 μν.1 * η μν.2 μν.2 * ∂_ μν.1 φ x μν.2 ^ 2 - ∂_ μν.1 φ x μν.2 * ∂_ μν.2 φ x μν.1 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
ring All goals completed! 🐙 d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
have hF_mul := HasVarAdjDerivAt.const_mul _ _ A
(HasVarAdjDerivAt.congr (G := fun A' x => ∑ μ, ∑ ν, F (μ, ν) A' x)
(HasVarAdjDerivAt.sum _ _ A hA F_h)
(fun φ _ => funext fun x => Fintype.sum_prod_type fun μν => F μν φ x))
(c := -1/(2 * 𝓕.μ₀)) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.valhF_mul:HasVarAdjDerivAt (fun φ x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) φ x)
(fun ψ x =>
∑ i,
(-(fderiv ℝ
(fun x' =>
(fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x' * ∂_ i.1 A.val x' i.2)
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ
(fun x' =>
∂_ i.1 A.val x' i.2 * (fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x')
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(-(fderiv ℝ (fun x' => (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x' * ∂_ i.2 A.val x' i.1) x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ (fun x' => ∂_ i.1 A.val x' i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x)
(Lorentz.Vector.basis i.2) •
Lorentz.Vector.basis i.1)))
A.val⊢ HasVarGradientAt
(fun A' x =>
-1 / (2 * 𝓕.μ₀) *
∑ μ,
∑ ν, (η μ μ * η ν ν * ∂_ μ { val := A' }.val x ν ^ 2 - ∂_ μ { val := A' }.val x ν * ∂_ ν { val := A' }.val x μ))
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
change HasVarGradientAt (fun A' x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) A' x) _ A d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff ℝ ∞ A.valF:(Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d) → (SpaceTime d → Lorentz.Vector d) → SpaceTime d → ℝ :=
fun x A' x_1 =>
match x with
| (μ, ν) => η μ μ * η ν ν * ∂_ μ A' x_1 ν ^ 2 - ∂_ μ A' x_1 ν * ∂_ ν A' x_1 μF_h:∀ (μν : (Fin 1 ⊕ Fin d) × (Fin 1 ⊕ Fin d)),
HasVarAdjDerivAt (F μν)
(fun ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
A.valhF_mul:HasVarAdjDerivAt (fun φ x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) φ x)
(fun ψ x =>
∑ i,
(-(fderiv ℝ
(fun x' =>
(fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x' * ∂_ i.1 A.val x' i.2)
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ
(fun x' =>
∂_ i.1 A.val x' i.2 * (fun x' => η i.1 i.1 * η i.2 i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x')
x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(-(fderiv ℝ (fun x' => (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x' * ∂_ i.2 A.val x' i.1) x)
(Lorentz.Vector.basis i.1) •
Lorentz.Vector.basis i.2 +
-(fderiv ℝ (fun x' => ∂_ i.1 A.val x' i.2 * (fun x' => -1 / (2 * 𝓕.μ₀) * ψ x') x') x)
(Lorentz.Vector.basis i.2) •
Lorentz.Vector.basis i.1)))
A.val⊢ HasVarGradientAt (fun A' x => -1 / (2 * 𝓕.μ₀) * ∑ μ, ∑ ν, F (μ, ν) A' x)
(fun x =>
∑ μν,
(fun μν ψ x =>
-(fderiv ℝ (fun x' => (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x' * ∂_ μν.1 A.val x' μν.2) x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * (fun x' => η μν.1 μν.1 * η μν.2 μν.2 * ψ x') x') x)
(Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(-(fderiv ℝ (fun x' => ψ x' * ∂_ μν.2 A.val x' μν.1) x) (Lorentz.Vector.basis μν.1) •
Lorentz.Vector.basis μν.2 +
-(fderiv ℝ (fun x' => ∂_ μν.1 A.val x' μν.2 * ψ x') x) (Lorentz.Vector.basis μν.2) •
Lorentz.Vector.basis μν.1))
μν (fun x' => -1 / (2 * 𝓕.μ₀) * (fun x => 1) x') x)
A.val
exact HasVarGradientAt.intro _ hF_mul rfl All goals completed! 🐙B.7. Gradient of the kinetic term in terms of the tensor derivative
attribute [-simp] Nat.reduceAdd Nat.reduceSucc Fin.isValue in
lemma gradKineticTerm_eq_tensorDeriv {d} {𝓕 : FreeSpace}
(A : ElectromagneticPotential d) (x : SpaceTime d)
(hA : ContDiff ℝ ∞ A) (ν : Fin 1 ⊕ Fin d) :
A.gradKineticTerm 𝓕 x ν = η ν ν * ((Tensorial.toTensor (M := Lorentz.Vector d)).symm
(permT id (IsReindexing.auto) {(1/ 𝓕.μ₀ : ℝ) •
tensorDeriv A.toFieldStrength x | κ κ ν'}ᵀ)) ν := by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x)))) ν
trans η ν ν * (Lorentz.Vector.basis.repr
((Tensorial.toTensor (M := Lorentz.Vector d)).symm
(permT id (IsReindexing.auto) {(1/ 𝓕.μ₀ : ℝ) • tensorDeriv A.toFieldStrength x | κ κ ν'}ᵀ))) ν d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(Lorentz.Vector.basis.repr
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x))))))
νd:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ η ν ν *
(Lorentz.Vector.basis.repr
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x))))))
ν =
η ν ν *
Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x)))) ν
swap d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ η ν ν *
(Lorentz.Vector.basis.repr
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x))))))
ν =
η ν ν *
Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x)))) νd:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(Lorentz.Vector.basis.repr
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x))))))
ν
· d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ η ν ν *
(Lorentz.Vector.basis.repr
(Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x))))))
ν =
η ν ν *
Tensorial.toTensor.symm
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor ((1 / 𝓕.μ₀) • tensorDeriv A.toFieldStrength x)))) ν simp [Lorentz.Vector.basis_repr_apply] All goals completed! 🐙
simp [Lorentz.Vector.basis_eq_map_tensor_basis] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(𝓕.μ₀⁻¹ *
((Tensor.basis ![Color.up]).repr
((permT id ⋯) ((contrT 1 0 1 ⋯) (Tensorial.toTensor (tensorDeriv A.toFieldStrength x)))))
(Lorentz.Vector.indexEquiv.symm ν))
rw [permT_basis_repr_symm_apply, d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(𝓕.μ₀⁻¹ *
((Tensor.basis (Fin.append ![Color.down] (Fin.append ![Color.up] ![Color.up]) ∘ Fin.succSuccAbove 0 1)).repr
((contrT 1 0 1 ⋯) (Tensorial.toTensor (tensorDeriv A.toFieldStrength x))))
fun i => (basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i))) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(𝓕.μ₀⁻¹ *
∑ x_1,
((Tensor.basis (Fin.append ![Color.down] (Fin.append ![Color.up] ![Color.up]))).repr
(Tensorial.toTensor (tensorDeriv A.toFieldStrength x)))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(x_1, x_1))) contrT_basis_repr_apply_eq_fin d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(𝓕.μ₀⁻¹ *
∑ x_1,
((Tensor.basis (Fin.append ![Color.down] (Fin.append ![Color.up] ![Color.up]))).repr
(Tensorial.toTensor (tensorDeriv A.toFieldStrength x)))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(x_1, x_1))) d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(𝓕.μ₀⁻¹ *
∑ x_1,
((Tensor.basis (Fin.append ![Color.down] (Fin.append ![Color.up] ![Color.up]))).repr
(Tensorial.toTensor (tensorDeriv A.toFieldStrength x)))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(x_1, x_1)))] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ gradKineticTerm 𝓕 A x ν =
η ν ν *
(𝓕.μ₀⁻¹ *
∑ x_1,
((Tensor.basis (Fin.append ![Color.down] (Fin.append ![Color.up] ![Color.up]))).repr
(Tensorial.toTensor (tensorDeriv A.toFieldStrength x)))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(x_1, x_1)))
conv_rhs =>
enter [2, 2, 2, μ] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin d| ((Tensor.basis (Fin.append ![Color.down] (Fin.append ![Color.up] ![Color.up]))).repr
(Tensorial.toTensor (tensorDeriv A.toFieldStrength x)))
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))
rw [tensorDeriv_toTensor_basis_repr (by d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin d⊢ Differentiable ℝ A.toFieldStrength fun_prop All goals completed! 🐙)]
enter [2, x] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx✝:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d| ((Tensor.basis (Fin.append ![Color.up] ![Color.up])).repr (Tensorial.toTensor (A.toFieldStrength x)))
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
rw [toFieldStrength_tensor_basis_eq_basis] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx✝:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d| ((Lorentz.Vector.basis.tensorProduct Lorentz.Vector.basis).repr (A.toFieldStrength x))
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
0,
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
1)
change fieldStrengthMatrix A x _ d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx✝:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin dμ:Fin 1 ⊕ Fin dx:SpaceTime d| (A.fieldStrengthMatrix x)
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
0,
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
1)
conv_lhs =>
rw [gradKineticTerm_eq_fieldStrength A x hA] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d| (∑ ν, (1 / 𝓕.μ₀ * η ν ν) • (∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x) • Lorentz.Vector.basis ν) ν
simp [Lorentz.Vector.apply_sum] d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d| 𝓕.μ₀⁻¹ * η ν ν * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x
ring_nf d:ℕ𝓕:FreeSpaceA:ElectromagneticPotential dx:SpaceTime dhA:ContDiff ℝ ∞ A.valν:Fin 1 ⊕ Fin d⊢ 𝓕.μ₀⁻¹ * η ν ν * ∑ μ, ∂_ μ (fun x => (A.fieldStrengthMatrix x) (μ, ν)) x =
𝓕.μ₀⁻¹ * η ν ν *
∑ μ,
∂_
(Lorentz.CoVector.indexEquiv
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).1)
(fun x =>
(A.fieldStrengthMatrix x)
((ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
0,
(ComponentIdx.prod
↑((ComponentIdx.DropPairSection.ofFinEquiv ⋯ fun i =>
(basisIdxCongr ⋯) (Lorentz.Vector.indexEquiv.symm ν (IsReindexing.inv id ⋯ i)))
(μ, μ))).2
1))
x
rfl All goals completed! 🐙