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.Dynamics.Lagrangian

The Hamiltonian in electromagnetism

i. Overview

In this module we define the canonical momentum and the Hamiltonian for the electromagnetic field in presence of a current density. We prove properties of these quantities, and express the Hamiltonian in terms of the electric and magnetic fields in the case of three spatial dimensions.

ii. Key results

    canonicalMomentum : The canonical momentum for the electromagnetic field in presence of a Lorentz current density.

    hamiltonian : The Hamiltonian for the electromagnetic field in presence of a Lorentz current density.

    hamiltonian_eq_electricField_magneticField : The Hamiltonian expressed in terms of the electric and magnetic fields.

iii. Table of contents

    A. The canonical momentum

      A.1. The canonical momentum in terms of the kinetic term

      A.2. The canonical momentum in terms of the field strength tensor

      A.3. The canonical momentum in terms of the electric field

    B. The Hamiltonian

      B.1. The hamiltonian in terms of the vector potential

      B.2. The hamiltonian in terms of the electric and magnetic fields

iv. References

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

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

@[expose] public sectionattribute [-simp] Fintype.sum_sum_typeattribute [-simp] Nat.succ_eq_add_one

A. The canonical momentum

We define the canonical momentum for the lagrangian L(A, ∂ A) as gradient of v ↦ L(A + t v, ∂ (A + t v)) - t * L(A + v, ∂(A + v)) at v = 0 This is equivalent to ∂ L/∂ (∂_0 A).

A.1. The canonical momentum in terms of the kinetic term

d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dv:Lorentz.Vector dhx:DifferentiableAt (fun v => kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) v } x) 0(fderiv (fun v => kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) v } x) 0) v - x (Sum.inl 0) * (fderiv (fun y => (minkowskiProduct y) (J x)) 0) v - x (Sum.inl 0) * (fderiv (fun v => lagrangian 𝓕 A J x) 0 - fderiv (fun v => (minkowskiProduct v) (J x)) 0) v = (fderiv (fun v => kineticTerm 𝓕 { val := fun x => A.val x + x (Sum.inl 0) v } x) 0) v All goals completed! 🐙

A.2. The canonical momentum in terms of the field strength tensor

d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dv:Lorentz.Vector dμ:Fin 1 Fin d-1 / (2 * 𝓕.μ₀) * (∂_ (Sum.inl 0) A.val x μ * (η μ μ * (2 * v μ)) - ∂_ μ A.val x (Sum.inl 0) * (2 * v μ)) = v μ * (𝓕.μ₀⁻¹ * (η μ μ * (η (μ, Sum.inl 0).1 (μ, Sum.inl 0).1 * ∂_ (μ, Sum.inl 0).1 A.val x (μ, Sum.inl 0).2 - η (μ, Sum.inl 0).2 (μ, Sum.inl 0).2 * ∂_ (μ, Sum.inl 0).2 A.val x (μ, Sum.inl 0).1))) d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dv:Lorentz.Vector dμ:Fin 1 Fin d-1 / (2 * 𝓕.μ₀) * (∂_ (Sum.inl 0) A.val x μ * (η μ μ * (2 * v μ)) - ∂_ μ A.val x (Sum.inl 0) * (2 * v μ)) = v μ * (𝓕.μ₀⁻¹ * (η μ μ * (η μ μ * ∂_ μ A.val x (Sum.inl 0) - ∂_ (Sum.inl 0) A.val x μ))) d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dv:Lorentz.Vector dμ:Fin 1 Fin d-(𝓕.μ₀⁻¹ * ∂_ (Sum.inl 0) A.val x μ * η μ μ * v μ) + 𝓕.μ₀⁻¹ * v μ * ∂_ μ A.val x (Sum.inl 0) = -(𝓕.μ₀⁻¹ * ∂_ (Sum.inl 0) A.val x μ * η μ μ * v μ) + 𝓕.μ₀⁻¹ * η μ μ ^ 2 * v μ * ∂_ μ A.val x (Sum.inl 0) All goals completed! 🐙

A.3. The canonical momentum in terms of the electric field

d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dμ:Fin 1 Fin di:Fin d𝓕.μ₀⁻¹ * (A.fieldStrengthMatrix x) (Sum.inr i, Sum.inl 0) = 𝓕.c.val⁻¹ * 𝓕.μ₀⁻¹ * (-𝓕.c.val * (A.fieldStrengthMatrix ((toTimeAndSpace 𝓕.c).symm ((time 𝓕.c) x, space x))) (Sum.inl 0, Sum.inr i)) d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dμ:Fin 1 Fin di:Fin d𝓕.μ₀⁻¹ * (A.fieldStrengthMatrix x) (Sum.inr i, Sum.inl 0) = -(𝓕.c.val⁻¹ * 𝓕.μ₀⁻¹ * (𝓕.c.val * (A.fieldStrengthMatrix x) (Sum.inl 0, Sum.inr i))) d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime dμ:Fin 1 Fin di:Fin d(A.fieldStrengthMatrix x) (Sum.inr i, Sum.inl 0) = -(A.fieldStrengthMatrix x) (Sum.inl 0, Sum.inr i) All goals completed! 🐙

B. The Hamiltonian

B.1. The hamiltonian in terms of the vector potential

d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin d∂ₜ (fun t => A.val ((toTimeAndSpace 𝓕.c).symm (t, ((toTimeAndSpace 𝓕.c) x).2)) (Sum.inr i)) ((toTimeAndSpace 𝓕.c) x).1 = ∂ₜ (fun t => A.val ((toTimeAndSpace 𝓕.c).symm (t, space x)) (Sum.inr i)) ((time 𝓕.c) x)d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun t => A.val ((toTimeAndSpace 𝓕.c).symm (t, ((toTimeAndSpace 𝓕.c) x).2))d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun x_1 => vectorPotential 𝓕.c A x_1 (space x)d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable A.val d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun t => A.val ((toTimeAndSpace 𝓕.c).symm (t, ((toTimeAndSpace 𝓕.c) x).2))d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun x_1 => vectorPotential 𝓕.c A x_1 (space x)d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable A.val d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun t => A.val ((toTimeAndSpace 𝓕.c).symm (t, ((toTimeAndSpace 𝓕.c) x).2)) exact (hA.differentiable (d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin d2 0 All goals completed! 🐙)).comp (d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun t => (toTimeAndSpace 𝓕.c).symm (t, ((toTimeAndSpace 𝓕.c) x).2) All goals completed! 🐙) d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable fun x_1 => vectorPotential 𝓕.c A x_1 (space x) exact vectorPotential_differentiable_time A (hA.differentiable (d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin d2 0 All goals completed! 🐙)) x.space d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin dDifferentiable A.val exact hA.differentiable (d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin d2 0 All goals completed! 🐙)d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d(𝓕.c.val ^ 2)⁻¹ * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 + (𝓕.c.val ^ 2)⁻¹ * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (Space.grad (scalarPotential 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp x_1 = (𝓕.c.val ^ 2)⁻¹ * 𝓕.μ₀⁻¹ * ( i, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i ^ 2 + electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_) d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 ^ 2 + 𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (Space.grad (scalarPotential 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp x_1 = 𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 ^ 2 + 𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_ d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 ^ 2 = 𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 ^ 2d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (Space.grad (scalarPotential 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp x_1 = 𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_ d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 ^ 2 = 𝓕.c.val⁻¹ ^ 2 * 𝓕.μ₀⁻¹ * x_1, (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 ^ 2 All goals completed! 🐙 d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d(fun x_1 => (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (Space.grad (scalarPotential 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp x_1) = fun i => (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i, (Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)).ofLp i⟫_ d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin d(electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i * (Space.grad (scalarPotential 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp i = (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i, (Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)).ofLp i⟫_ d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime di:Fin d(electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i * (Space.grad (scalarPotential 𝓕.c A ((time 𝓕.c) x)) (space x)).ofLp i = (Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)).ofLp i * (electricField 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i All goals completed! 🐙

B.2. The hamiltonian in terms of the electric and magnetic fields

d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d1 / 𝓕.c.val ^ 2 * 𝓕.μ₀⁻¹ * (electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 + electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space 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) - scalarPotential 𝓕.c A ((time 𝓕.c) x) (space x) * LorentzCurrentDensity.chargeDensity 𝓕.c J ((time 𝓕.c) x) (space x) + i, (vectorPotential 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i * (LorentzCurrentDensity.currentDensity 𝓕.c J ((time 𝓕.c) x) (space x)).ofLp i) = 1 / 2 * 𝓕.ε₀ * (electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 + 𝓕.c.val ^ 2 / 2 * i, j, magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) (space x) (i, j) ^ 2) + 𝓕.ε₀ * electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_ + scalarPotential 𝓕.c A ((time 𝓕.c) x) (space x) * LorentzCurrentDensity.chargeDensity 𝓕.c J ((time 𝓕.c) x) (space x) - i, (vectorPotential 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp i * (LorentzCurrentDensity.currentDensity 𝓕.c J ((time 𝓕.c) x) (space x)).ofLp i d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d𝓕.ε₀ * (electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 + electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_) - (2⁻¹ * (𝓕.ε₀ * electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 - 𝓕.μ₀⁻¹ * 2⁻¹ * x_1, x_2, magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) (space x) (x_1, x_2) ^ 2) - scalarPotential 𝓕.c A ((time 𝓕.c) x) (space x) * LorentzCurrentDensity.chargeDensity 𝓕.c J ((time 𝓕.c) x) (space x) + x_1, (vectorPotential 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (LorentzCurrentDensity.currentDensity 𝓕.c J ((time 𝓕.c) x) (space x)).ofLp x_1) = 2⁻¹ * 𝓕.ε₀ * (electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 + 𝓕.μ₀⁻¹ * 𝓕.ε₀⁻¹ / 2 * x_1, x_2, magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) (space x) (x_1, x_2) ^ 2) + 𝓕.ε₀ * electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_ + scalarPotential 𝓕.c A ((time 𝓕.c) x) (space x) * LorentzCurrentDensity.chargeDensity 𝓕.c J ((time 𝓕.c) x) (space x) - x_1, (vectorPotential 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (LorentzCurrentDensity.currentDensity 𝓕.c J ((time 𝓕.c) x) (space x)).ofLp x_1 d:𝓕:FreeSpaceA:ElectromagneticPotential dhA:ContDiff 2 A.valJ:LorentzCurrentDensity dx:SpaceTime d𝓕.ε₀ * (electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 + electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_) * 2 ^ 2 * 𝓕.μ₀ - (𝓕.ε₀ * electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 * 2 * 𝓕.μ₀ - x_1, x_2, magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) (space x) (x_1, x_2) ^ 2 - 2 ^ 2 * 𝓕.μ₀ * scalarPotential 𝓕.c A ((time 𝓕.c) x) (space x) * LorentzCurrentDensity.chargeDensity 𝓕.c J ((time 𝓕.c) x) (space x) + 2 ^ 2 * 𝓕.μ₀ * x_1, (vectorPotential 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (LorentzCurrentDensity.currentDensity 𝓕.c J ((time 𝓕.c) x) (space x)).ofLp x_1) = 𝓕.ε₀ * electricField 𝓕.c A ((time 𝓕.c) x) (space x) ^ 2 * 2 * 𝓕.μ₀ + x_1, x_2, magneticFieldMatrix 𝓕.c A ((time 𝓕.c) x) (space x) (x_1, x_2) ^ 2 + 𝓕.ε₀ * electricField 𝓕.c A ((time 𝓕.c) x) (space x), Space.grad (fun x_1 => scalarPotential 𝓕.c A ((time 𝓕.c) x) x_1) (space x)⟫_ * 2 ^ 2 * 𝓕.μ₀ + 2 ^ 2 * 𝓕.μ₀ * scalarPotential 𝓕.c A ((time 𝓕.c) x) (space x) * LorentzCurrentDensity.chargeDensity 𝓕.c J ((time 𝓕.c) x) (space x) - 2 ^ 2 * 𝓕.μ₀ * x_1, (vectorPotential 𝓕.c A ((time 𝓕.c) x) (space x)).ofLp x_1 * (LorentzCurrentDensity.currentDensity 𝓕.c J ((time 𝓕.c) x) (space x)).ofLp x_1 All goals completed! 🐙