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.SpaceAndTime.TimeAndSpace.ConstantTimeDist public import Physlib.Mathematics.VariationalCalculus.HasVarAdjDeriv public import Physlib.SpaceAndTime.Space.DistOfFunction public import Physlib.SpaceAndTime.SpaceTime.TimeSlice

The Electromagnetic Potential

i. Overview

The electromagnetic potential A^μ is the fundamental objects in electromagnetism. Mathematically it is related to a connection on a U(1)-bundle.

We define the electromagnetic potential as a distribution from spacetime to contravariant Lorentz vectors.

ii. Key results

    DistElectromagneticPotential : the type of electromagnetic potentials as distributions.

iii. Table of contents

    A. The electromagnetic potential as a distribution

      A.1. Constructors

      A.2. The derivative of the electromagnetic potential as a distribution

      A.3. The derivative in terms of the basis

iv. References

    https://quantummechanics.ucsd.edu/ph130a/130_notes/node452.html

    https://ph.qmul.ac.uk/sites/default/files/EMT10new.pdf

@[expose] public section

A. The electromagnetic potential as a distribution

attribute [-simp] Fintype.sum_sum_typeattribute [-simp] Nat.succ_eq_add_one

A.1. Constructors

@[simp] lemma ofStaticScalarPotentialFunction_of_isDistBounded {d} (c : SpeedOfLight) (φ : Space d ) ( : Space.IsDistBounded φ) : ofStaticScalarPotentialFunction c φ = ofStaticScalarPotential c (Space.distOfFunction φ ) := d:c:SpeedOfLightφ:Space d :Space.IsDistBounded φofStaticScalarPotentialFunction c φ = (ofStaticScalarPotential c) (Space.distOfFunction φ ) classical All goals completed! 🐙@[simp] lemma ofStaticScalarPotentialFunction_eq_zero_of_not_isDistBounded {d} (c : SpeedOfLight) (φ : Space d ) ( : ¬ Space.IsDistBounded φ) : ofStaticScalarPotentialFunction c φ = 0 := d:c:SpeedOfLightφ:Space d :¬Space.IsDistBounded φofStaticScalarPotentialFunction c φ = 0 classical All goals completed! 🐙TODO "Add a constructor for DistElectromagneticPotential from electric and magnetic fields."

A.2. The derivative of the electromagnetic potential as a distribution

d:A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin d a, Lorentz.CoVector.basis μ ⊗ₜ[] ((Lorentz.Vector.basis.repr (((distDeriv μ) A) ε)) a Lorentz.Vector.basis a) = ν, ((distDeriv μ) A) ε ν Lorentz.CoVector.basis μ ⊗ₜ[] Lorentz.Vector.basis ν d:A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin d(fun a => Lorentz.CoVector.basis μ ⊗ₜ[] ((Lorentz.Vector.basis.repr (((distDeriv μ) A) ε)) a Lorentz.Vector.basis a)) = fun ν => ((distDeriv μ) A) ε ν Lorentz.CoVector.basis μ ⊗ₜ[] Lorentz.Vector.basis ν d:A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dLorentz.CoVector.basis μ ⊗ₜ[] ((Lorentz.Vector.basis.repr (((distDeriv μ) A) ε)) ν Lorentz.Vector.basis ν) = ((distDeriv μ) A) ε ν Lorentz.CoVector.basis μ ⊗ₜ[] Lorentz.Vector.basis ν d:A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d(Lorentz.Vector.basis.repr (((distDeriv μ) A) ε)) ν Lorentz.CoVector.basis μ ⊗ₜ[] Lorentz.Vector.basis ν = ((distDeriv μ) A) ε ν Lorentz.CoVector.basis μ ⊗ₜ[] Lorentz.Vector.basis ν All goals completed! 🐙

A.3. The derivative in terms of the basis

d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d((distDeriv μ) A) ε ν * ((Finsupp.single ν 1) ν * (Finsupp.single μ 1) μ) = ((distDeriv μ) A) ε νd:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d b Finset.univ, b ν ((distDeriv μ) A) ε b * ((Finsupp.single b 1) ν * (Finsupp.single μ 1) μ) = 0d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dν Finset.univ ((distDeriv μ) A) ε ν * ((Finsupp.single ν 1) ν * (Finsupp.single μ 1) μ) = 0d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d b Finset.univ, b μ x, ((distDeriv b) A) ε x * ((Finsupp.single x 1) ν * (Finsupp.single b 1) μ) = 0d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dμ Finset.univ x, ((distDeriv μ) A) ε x * ((Finsupp.single x 1) ν * (Finsupp.single μ 1) μ) = 0 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d((distDeriv μ) A) ε ν * ((Finsupp.single ν 1) ν * (Finsupp.single μ 1) μ) = ((distDeriv μ) A) ε ν All goals completed! 🐙 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d b Finset.univ, b ν ((distDeriv μ) A) ε b * ((Finsupp.single b 1) ν * (Finsupp.single μ 1) μ) = 0 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dμ':Fin 1 Fin da✝:μ' Finset.univh:μ' ν((distDeriv μ) A) ε μ' * ((Finsupp.single μ' 1) ν * (Finsupp.single μ 1) μ) = 0 All goals completed! 🐙 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dν Finset.univ ((distDeriv μ) A) ε ν * ((Finsupp.single ν 1) ν * (Finsupp.single μ 1) μ) = 0 All goals completed! 🐙 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin d b Finset.univ, b μ x, ((distDeriv b) A) ε x * ((Finsupp.single x 1) ν * (Finsupp.single b 1) μ) = 0 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dν':Fin 1 Fin da✝:ν' Finset.univh:ν' μ x, ((distDeriv ν') A) ε x * ((Finsupp.single x 1) ν * (Finsupp.single ν' 1) μ) = 0 All goals completed! 🐙 d:μν:(Fin 1 Fin d) × (Fin 1 Fin d)A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )μ:Fin 1 Fin dν:Fin 1 Fin dμ Finset.univ x, ((distDeriv μ) A) ε x * ((Finsupp.single x 1) ν * (Finsupp.single μ 1) μ) = 0 All goals completed! 🐙d:A:DistElectromagneticPotential dε:𝓢(SpaceTime d, )b:ComponentIdx (Fin.append ![Color.down] ![Color.up])hb:(Lorentz.CoVector.basis.reindex Lorentz.CoVector.indexEquiv.symm).tensorProduct (Lorentz.Vector.basis.reindex Lorentz.Vector.indexEquiv.symm) = (Lorentz.CoVector.basis.tensorProduct Lorentz.Vector.basis).reindex (Lorentz.CoVector.indexEquiv.symm.prodCongr Lorentz.Vector.indexEquiv.symm)((distDeriv ((Lorentz.CoVector.indexEquiv.symm.prodCongr Lorentz.Vector.indexEquiv.symm).symm (ComponentIdx.prod b)).1) A) ε ((Lorentz.CoVector.indexEquiv.symm.prodCongr Lorentz.Vector.indexEquiv.symm).symm (ComponentIdx.prod b)).2 = ((distDeriv (b 0)) A) ε (b 1) All goals completed! 🐙