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.IsExtrema

The constant electric and magnetic fields

i. Overview

In this module we define the electromagnetic potential which gives rise to a given constant electric and magnetic field matrix.

We will show that this electromagnetic potential is an extrema of the free-space electromagnetic action.

ii. Key results

iii. Table of contents

    A. The definition of the potential

    B. Smoothness of the potential

    C. The scalar potential

    D. The vector potential

      D.1. Time derivative of the vector potential

      D.2. Space derivative of the vector potential

    E. The electric field

    F. The magnetic field

    G. Is extrema

iv. References

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

A. The definition of the potential

The electromagnetic potential which gives rise to a constant electric field E₀ and a constant magnetic field matrix B₀.

set_option linter.unusedVariables false

An electric potential which gives a given constant E-field and B-field.

@[nolint unusedArguments] noncomputable def constantEB {d : } (c : SpeedOfLight) (E₀ : EuclideanSpace (Fin d)) (B₀ : Fin d × Fin d ) (B₀_antisymm : i j, B₀ (i, j) = - B₀ (j, i)) : ElectromagneticPotential d where val := fun x μ => match μ with | Sum.inl _ => - (1/c) * E₀, Space.basis.repr x.space⟫_ | Sum.inr i => (1/2) * j, B₀ (i, j) * x.space j

B. Smoothness of the potential

The potential is smooth.

d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i) (i : Fin 1 Fin d), ContDiff fun x => (constantEB c E₀ B₀ B₀_antisymm).val x i d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dContDiff fun x => (constantEB c E₀ B₀ B₀_antisymm).val x μ match μ with d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => (constantEB c E₀ B₀ B₀_antisymm).val x (Sum.inl val✝) d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => -(c.val⁻¹ * E₀, Space.basis.repr (space x)⟫_) d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => c.val⁻¹ * E₀, Space.basis.repr (space x)⟫_ d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => c.val⁻¹d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => E₀, Space.basis.repr (space x)⟫_ d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => c.val⁻¹ All goals completed! 🐙 d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => E₀d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => Space.basis.repr (space x) d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => E₀ All goals completed! 🐙 d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin dval✝:Fin 1ContDiff fun x => Space.basis.repr (space x) All goals completed! 🐙 d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dContDiff fun x => (constantEB c E₀ B₀ B₀_antisymm).val x (Sum.inr i) d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dContDiff fun x => 2⁻¹ * j, B₀ (i, j) * (space x).val j d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dContDiff fun x => 2⁻¹d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dContDiff fun x => j, B₀ (i, j) * (space x).val j d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dContDiff fun x => 2⁻¹ All goals completed! 🐙 d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dContDiff fun x => j, B₀ (i, j) * (space x).val j d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin d i_1 Finset.univ, ContDiff fun x => B₀ (i, i_1) * (space x).val i_1 d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dj:Fin da✝:j Finset.univContDiff fun x => B₀ (i, j) * (space x).val j d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dj:Fin da✝:j Finset.univContDiff fun x => B₀ (i, j)d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dj:Fin da✝:j Finset.univContDiff fun x => (space x).val j d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)μ:Fin 1 Fin di:Fin dj:Fin da✝:j Finset.univContDiff fun x => B₀ (i, j) All goals completed! 🐙 All goals completed! 🐙

C. The scalar potential

The scalar potential of the electromagnetic potential is given by -⟪E₀, x⟫.

lemma constantEB_scalarPotential {c : SpeedOfLight} {E₀ : EuclideanSpace (Fin d)} {B₀ : Fin d × Fin d } {B₀_antisymm : i j, B₀ (i, j) = - B₀ (j, i)} : (constantEB c E₀ B₀ B₀_antisymm).scalarPotential c = fun _ x => -E₀, Space.basis.repr x⟫_ := d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)scalarPotential c (constantEB c E₀ B₀ B₀_antisymm) = fun x x_1 => -E₀, Space.basis.repr x_1⟫_ d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space dscalarPotential c (constantEB c E₀ B₀ B₀_antisymm) t x = -E₀, Space.basis.repr x⟫_ All goals completed! 🐙

D. The vector potential

The vector potential of the electromagnetic potential is (1 / 2) * ∑ j, B₀ (i, j) * x j .

lemma constantEB_vectorPotential {c : SpeedOfLight} {E₀ : EuclideanSpace (Fin d)} {B₀ : Fin d × Fin d } {B₀_antisymm : i j, B₀ (i, j) = - B₀ (j, i)} : (constantEB c E₀ B₀ B₀_antisymm).vectorPotential c = fun _ x => WithLp.toLp 2 fun i => (1 / 2) * j, B₀ (i, j) * x j := d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)vectorPotential c (constantEB c E₀ B₀ B₀_antisymm) = fun x x_1 => WithLp.toLp 2 fun i => 1 / 2 * j, B₀ (i, j) * x_1.val j d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di:Fin d(vectorPotential c (constantEB c E₀ B₀ B₀_antisymm) t x).ofLp i = (WithLp.toLp 2 fun i => 1 / 2 * j, B₀ (i, j) * x.val j).ofLp i All goals completed! 🐙

D.1. Time derivative of the vector potential

d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space d∂ₜ (fun x_1 => (fun x x_2 => WithLp.toLp 2 fun i => 1 / 2 * j, B₀ (i, j) * x_2.val j) x_1 x) t = 0 All goals completed! 🐙

D.2. Space derivative of the vector potential

d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di:Fin dj:Fin dk:Fin da✝:k Finset.univhk:k iB₀ (j, k) = 0 0 = 0d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di:Fin dj:Fin dk:Fin da✝:k Finset.univhk:k ii k d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di:Fin dj:Fin dk:Fin da✝:k Finset.univhk:k ii k All goals completed! 🐙 d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di:Fin dj:Fin di Finset.univ (fderiv (fun x => B₀ (j, i) * x.val i) x) (Space.basis i) = 0 All goals completed! 🐙

E. The electric field

d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space d-(-fun x => Space.basis.repr (Space.basis.repr.symm E₀)) x = E₀ All goals completed! 🐙

F. The magnetic field

d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di✝:Fin d × Fin di:Fin dj:Fin d1 / 2 * B₀ (i, j) - 1 / 2 * B₀ (j, i) = B₀ (i, j)d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di✝:Fin d × Fin di:Fin dj:Fin dDifferentiable (constantEB c E₀ B₀ B₀_antisymm).val conv_lhs => d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di✝:Fin d × Fin di:Fin dj:Fin d| 1 / 2 * B₀ (j, i) d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di✝:Fin d × Fin di:Fin dj:Fin d| 1 / 2 * -B₀ (i, j) d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di✝:Fin d × Fin di:Fin dj:Fin dDifferentiable (constantEB c E₀ B₀ B₀_antisymm).val apply constantEB_smooth.differentiable (d:c:SpeedOfLightE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space di✝:Fin d × Fin di:Fin dj:Fin d 0 All goals completed! 🐙)

G. Is extrema

d:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i) (t : Time) (x : Space d), Space.div (electricField 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t) x = LorentzCurrentDensity.chargeDensity 𝓕.c 0 t x / 𝓕.ε₀ (i : Fin d), 𝓕.μ₀ * 𝓕.ε₀ * (∂ₜ (fun t => electricField 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t x) t).ofLp i = j, Space.deriv j (fun x => magneticFieldMatrix 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t x (j, i)) x - 𝓕.μ₀ * (LorentzCurrentDensity.currentDensity 𝓕.c 0 t x).ofLp id:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)ContDiff (constantEB 𝓕.c E₀ B₀ B₀_antisymm).vald:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)ContDiff 0 d:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i) (t : Time) (x : Space d), Space.div (electricField 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t) x = LorentzCurrentDensity.chargeDensity 𝓕.c 0 t x / 𝓕.ε₀ (i : Fin d), 𝓕.μ₀ * 𝓕.ε₀ * (∂ₜ (fun t => electricField 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t x) t).ofLp i = j, Space.deriv j (fun x => magneticFieldMatrix 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t x (j, i)) x - 𝓕.μ₀ * (LorentzCurrentDensity.currentDensity 𝓕.c 0 t x).ofLp i d:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)t:Timex:Space dSpace.div (electricField 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t) x = LorentzCurrentDensity.chargeDensity 𝓕.c 0 t x / 𝓕.ε₀ (i : Fin d), 𝓕.μ₀ * 𝓕.ε₀ * (∂ₜ (fun t => electricField 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t x) t).ofLp i = j, Space.deriv j (fun x => magneticFieldMatrix 𝓕.c (constantEB 𝓕.c E₀ B₀ B₀_antisymm) t x (j, i)) x - 𝓕.μ₀ * (LorentzCurrentDensity.currentDensity 𝓕.c 0 t x).ofLp i All goals completed! 🐙 d:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)ContDiff (constantEB 𝓕.c E₀ B₀ B₀_antisymm).val All goals completed! 🐙 d:𝓕:FreeSpaceE₀:EuclideanSpace (Fin d)B₀:Fin d × Fin d B₀_antisymm: (i j : Fin d), B₀ (i, j) = -B₀ (j, i)ContDiff 0 All goals completed! 🐙