Imports
/- Copyright (c) 2025 Zhi Kai Pong. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Zhi Kai Pong, Joseph Tooby-Smith -/ module public import Physlib.Electromagnetism.Vacuum.IsPlaneWave

Harmonic Wave in Vacuum

i. Overview

In this module we define the electromagnetic potential for a monochromatic harmonic wave travelling in the x-direction in free space, and prove various properties about it, including that it satisfies Maxwell's equations in free space, that it is a plane wave.

We work here in a general dimension d so we use the magnetic field is the form of a matrix rather than a vector.

ii. Key results

    harmonicWaveX : Definition of the electromagnetic potential for a harmonic wave travelling in the x-direction.

    harmonicWaveX_isExtrema : The harmonic wave satisfies Maxwell's equations in free space.

    harmonicWaveX_isPlaneWave : The harmonic wave is a plane wave.

    harmonicWaveX_polarization_ellipse : The polarization ellipse equation for the harmonic wave.

iii. Table of contents

    A. The electromagnetic potential for a harmonic wave

      A.1. Differentiability of the electromagnetic potential

      A.2. Smoothness of the electromagnetic potential

    B. The scalar potential

    C. The vector potential

      C.1. Components of the vector potential

      C.2. Space derivatives of the vector potential

    D. The electric field

      D.1. Components of the electric field

      D.2. Spatial derivatives of the electric field

      D.3. Time derivatives of the electric field

      D.4. Divergence of the electric field

    E. The magnetic field matrix for a harmonic wave

      E.1. Components of the magnetic field matrix

      E.2. Space derivatives of the magnetic field matrix

    F. Maxwell's equations for a harmonic wave

    G. The harmonic wave is a plane wave

    H. Polarization ellipse of the harmonic wave

iv. References

@[expose] public section

A. The electromagnetic potential for a harmonic wave

@[simp] lemma harmonicWaveX_inl_zero {d} (𝓕 : FreeSpace) (k : ℝ) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) (x : SpaceTime d.succ) : harmonicWaveX 𝓕 k E₀ φ x (Sum.inl 0) = 0 := d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝx:SpaceTime d.succ⊢ (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inl 0) = 0 All goals completed! 🐙@[simp] lemma harmonicWaveX_inr_zero {d} (𝓕 : FreeSpace) (k : ℝ) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) (x : SpaceTime d.succ) : harmonicWaveX 𝓕 k E₀ φ x (Sum.inr 0) = 0 := d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝx:SpaceTime d.succ⊢ (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inr 0) = 0 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝx:SpaceTime d.succ⊢ (match Sum.inr 0 with | Sum.inl 0 => 0 | Sum.inr ⟨0, ⋯⟩ => 0 | Sum.inr ⟨i.succ, h⟩ => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (𝓕.c.val * (x (Sum.inl 0) / 𝓕.c.val) - (SpaceTime.space x).val 0) + φ ⟨i, ⋯⟩)) = 0 All goals completed! 🐙

A.1. Differentiability of the electromagnetic potential

d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝ⊢ ∀ (i : Fin 1 ⊕ Fin d.succ), Differentiable ℝ fun x => (harmonicWaveX 𝓕 k E₀ φ).val x i d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succ⊢ Differentiable ℝ fun x => (harmonicWaveX 𝓕 k E₀ φ).val x μ match μ with d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succ⊢ Differentiable ℝ fun x => (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inl 0) All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succh:0 < d.succ⊢ Differentiable ℝ fun x => (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inr ⟨0, h⟩) All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succi:ℕh:i.succ < d.succ⊢ Differentiable ℝ fun x => (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inr ⟨i.succ, h⟩) d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succi:ℕh:i.succ < d.succ⊢ Differentiable ℝ fun x => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (𝓕.c.val * (x (Sum.inl 0) / 𝓕.c.val) - (SpaceTime.space x).val 0) + φ ⟨i, ⋯⟩) All goals completed! 🐙

A.2. Smoothness of the electromagnetic potential

d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝ⊢ ∀ (i : Fin 1 ⊕ Fin d.succ), ContDiff ℝ n fun x => (harmonicWaveX 𝓕 k E₀ φ).val x i d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succ⊢ ContDiff ℝ n fun x => (harmonicWaveX 𝓕 k E₀ φ).val x μ match μ with d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succ⊢ ContDiff ℝ n fun x => (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inl 0) d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succ⊢ ContDiff ℝ n fun x => 0; All goals completed! 🐙 d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succh:0 < d.succ⊢ ContDiff ℝ n fun x => (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inr ⟨0, h⟩) d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succh:0 < d.succ⊢ ContDiff ℝ n fun x => match Sum.inr 0 with | Sum.inl 0 => 0 | Sum.inr ⟨0, ⋯⟩ => 0 | Sum.inr ⟨i.succ, h⟩ => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (𝓕.c.val * (x (Sum.inl 0) / 𝓕.c.val) - (SpaceTime.space x).val 0) + φ ⟨i, ⋯⟩); All goals completed! 🐙 d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succi:ℕh:i.succ < d.succ⊢ ContDiff ℝ n fun x => (harmonicWaveX 𝓕 k E₀ φ).val x (Sum.inr ⟨i.succ, h⟩) d:ℕn:WithTop ℕ∞𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝμ:Fin 1 ⊕ Fin d.succi:ℕh:i.succ < d.succ⊢ ContDiff ℝ n fun x => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (𝓕.c.val * (x (Sum.inl 0) / 𝓕.c.val) - (SpaceTime.space x).val 0) + φ ⟨i, ⋯⟩) All goals completed! 🐙

B. The scalar potential

The scalar potential of the harmonic wave is zero.

@[simp] lemma harmonicWaveX_scalarPotential_eq_zero {d} (𝓕 : FreeSpace) (k : ℝ) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) : (harmonicWaveX 𝓕 k E₀ φ).scalarPotential 𝓕.c = 0 := d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝ⊢ scalarPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) = 0 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝx:Timex✝:Space d.succ⊢ scalarPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) x x✝ = 0 x x✝ d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝx:Timex✝:Space d.succ⊢ (SpaceTime.timeSlice 𝓕.c) (fun x => 0) x x✝ = 0 All goals completed! 🐙

C. The vector potential

C.1. Components of the vector potential

@[simp] lemma harmonicWaveX_vectorPotential_zero_eq_zero {d} (𝓕 : FreeSpace) (k : ℝ) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) (t : Time) (x : Space d.succ) : (harmonicWaveX 𝓕 k E₀ φ).vectorPotential 𝓕.c t x 0 = 0 := d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp 0 = 0 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ (match Sum.inr 0 with | Sum.inl 0 => 0 | Sum.inr ⟨0, ⋯⟩ => 0 | Sum.inr ⟨i.succ, h⟩ => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (𝓕.c.val * t.val - x.val 0) + φ ⟨i, ⋯⟩)) = 0 All goals completed! 🐙lemma harmonicWaveX_vectorPotential_succ {d} (𝓕 : FreeSpace) (k : ℝ) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) (t : Time) (x : Space d.succ) (i : Fin d) : (harmonicWaveX 𝓕 k E₀ φ).vectorPotential 𝓕.c t x i.succ = - E₀ i * 1 / (𝓕.c * k) * Real.sin (k * (t.val * 𝓕.c - x 0) + φ i) := d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp i.succ = -E₀ i * 1 / (𝓕.c.val * k) * sin (k * (t.val * 𝓕.c.val - x.val 0) + φ i) d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ sin (k * (𝓕.c.val * t.val - x.val 0) + φ i) = sin (k * (t.val * 𝓕.c.val - x.val 0) + φ i) ∨ E₀ i = 0 ∨ k = 0 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ sin (k * (𝓕.c.val * t.val - x.val 0) + φ i) = sin (k * (t.val * 𝓕.c.val - x.val 0) + φ i) All goals completed! 🐙lemma harmonicWaveX_vectorPotential_succ' {d} (𝓕 : FreeSpace) (k : ℝ) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) (t : Time) (x : Space d.succ) (i : ℕ) (hi : i.succ < d.succ) : (harmonicWaveX 𝓕 k E₀ φ).vectorPotential 𝓕.c t x ⟨i.succ, hi⟩ = - E₀ ⟨i, OpticalMedium:Sort ?u.2OM:OpticalMediumd:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:ℕhi:i.succ < d.succ⊢ i < d All goals completed! 🐙⟩ * 1 / (𝓕.c * k) * Real.sin (k * (t.val * 𝓕.c - x 0) + φ ⟨i, OpticalMedium:Sort ?u.2OM:OpticalMediumd:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:ℕhi:i.succ < d.succ⊢ i < d All goals completed! 🐙⟩) := d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:ℕhi:i.succ < d.succ⊢ (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp ⟨i.succ, hi⟩ = -E₀ ⟨i, ⋯⟩ * 1 / (𝓕.c.val * k) * sin (k * (t.val * 𝓕.c.val - x.val 0) + φ ⟨i, ⋯⟩) d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:ℕhi:i.succ < d.succ⊢ sin (k * (𝓕.c.val * t.val - x.val 0) + φ ⟨i, ⋯⟩) = sin (k * (t.val * 𝓕.c.val - x.val 0) + φ ⟨i, ⋯⟩) ∨ E₀ ⟨i, ⋯⟩ = 0 ∨ k = 0 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:ℕhi:i.succ < d.succ⊢ sin (k * (𝓕.c.val * t.val - x.val 0) + φ ⟨i, ⋯⟩) = sin (k * (t.val * 𝓕.c.val - x.val 0) + φ ⟨i, ⋯⟩) All goals completed! 🐙

C.2. Space derivatives of the vector potential

d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succj:Fin di✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_eq_zero:∀ (g : ℝ → ℝ), Differentiable ℝ g → Space.deriv j.succ (fun y => g (y.val 0)) x = 0⊢ Space.deriv j.succ (fun x => (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp ⟨i.succ, hi⟩) x = 0 d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succj:Fin di✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_eq_zero:∀ (g : ℝ → ℝ), Differentiable ℝ g → Space.deriv j.succ (fun y => g (y.val 0)) x = 0⊢ Space.deriv j.succ (fun x => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (t.val * 𝓕.c.val - x.val 0) + φ ⟨i, ⋯⟩)) x = 0 exact transverse_deriv_eq_zero (fun u => -E₀ ⟨i, d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succj:Fin di✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_eq_zero:∀ (g : ℝ → ℝ), Differentiable ℝ g → Space.deriv j.succ (fun y => g (y.val 0)) x = 0u:ℝ⊢ i < d All goals completed! 🐙⟩ / (𝓕.c.val * k) * sin (k * (t.val * 𝓕.c.val - u) + φ ⟨i, d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succj:Fin di✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_eq_zero:∀ (g : ℝ → ℝ), Differentiable ℝ g → Space.deriv j.succ (fun y => g (y.val 0)) x = 0u:ℝ⊢ i < d All goals completed! 🐙⟩)) (d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succj:Fin di✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_eq_zero:∀ (g : ℝ → ℝ), Differentiable ℝ g → Space.deriv j.succ (fun y => g (y.val 0)) x = 0⊢ Differentiable ℝ fun u => -E₀ ⟨i, ⋯⟩ / (𝓕.c.val * k) * sin (k * (t.val * 𝓕.c.val - u) + φ ⟨i, ⋯⟩) All goals completed! 🐙)d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(-E₀ i / (𝓕.c.val * k) * (cos (k * (t.val * 𝓕.c.val - x.val 0) + φ i) * (k * if 0 = 0 then 1 else 0))) = E₀ i / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ i) d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(-E₀ i / (𝓕.c.val * k) * (cos (k * (t.val * 𝓕.c.val - x.val 0) + φ i) * k)) = E₀ i / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ i) All goals completed! 🐙

D. The electric field

D.1. Components of the electric field

d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ ∂ₜ (fun t => (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp 0) t = 0d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ Differentiable ℝ fun t => vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ Differentiable ℝ fun t => vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x All goals completed! 🐙d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(-E₀ i / (𝓕.c.val * k) * (cos (k * (t.val * 𝓕.c.val - x.val 0) + φ i) * (k * (𝓕.c.val • fderiv ℝ Time.val t) 1))) = E₀ i * cos (k * 𝓕.c.val * t.val - k * x.val 0 + φ i)d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(-E₀ i / (𝓕.c.val * k) * (cos (k * (t.val * 𝓕.c.val - x.val 0) + φ i) * (k * 𝓕.c.val))) = E₀ i * cos (k * 𝓕.c.val * t.val - k * x.val 0 + φ i)d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x All goals completed! 🐙

D.2. Spatial derivatives of the electric field

d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0⊢ Space.deriv ⟨i, ⋯⟩.succ (fun x => (electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp ⟨i, ⋯⟩.succ) x = 0 conv_lhs => d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0x:Space d.succ| (electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp ⟨i, ⋯⟩.succ d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi✝:Fin d.succi:ℕhi:i.succ < d.succtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0x:Space d.succ| E₀ ⟨i, ⋯⟩ * cos (k * 𝓕.c.val * t.val - k * x.val 0 + φ ⟨i, ⋯⟩) All goals completed! 🐙

D.3. Time derivatives of the electric field

d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ E₀ i * (sin (k * 𝓕.c.val * t.val - k * x.val 0 + φ i) * ((k * 𝓕.c.val) • fderiv ℝ Time.val t) 1) = k * 𝓕.c.val * E₀ i * sin (k * 𝓕.c.val * t.val - k * x.val 0 + φ i) d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ E₀ i * (sin (k * 𝓕.c.val * t.val - k * x.val 0 + φ i) * (k * 𝓕.c.val)) = k * 𝓕.c.val * E₀ i * sin (k * 𝓕.c.val * t.val - k * x.val 0 + φ i) All goals completed! 🐙

D.4. Divergence of the electric field

@[simp] lemma harmonicWaveX_div_electricField_eq_zero {d} (𝓕 : FreeSpace) (k : ℝ) (hk : k ≠ 0) (E₀ : Fin d → ℝ) (φ : Fin d → ℝ) (t : Time) (x : Space d.succ) : Space.div (fun x => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x) x = 0 := d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ div (fun x => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x) x = 0 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succ⊢ ∑ x_1, Space.deriv x_1 (fun x => (electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp x_1) x = 0 All goals completed! 🐙

E. The magnetic field matrix for a harmonic wave

E.1. Components of the magnetic field matrix

d:ℕ𝓕:FreeSpacek:ℝE₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin dj:Fin d⊢ Space.deriv j.succ (fun x => (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp i.succ) x - Space.deriv i.succ (fun x => (vectorPotential 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x).ofLp j.succ) x = 0 All goals completed! 🐙d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(E₀ i / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ i)) = -E₀ i / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ i)d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ k ≠ 0 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(E₀ i / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ i)) = -E₀ i / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ i)d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ k ≠ 0 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ k ≠ 0 All goals completed! 🐙d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ k ≠ 0 All goals completed! 🐙

E.2. Space derivatives of the magnetic field matrix

d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d.succj:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0⊢ Space.deriv l.succ (fun x => magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (i, j)) x = 0 match i, j with d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d.succj:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0⊢ Space.deriv l.succ (fun x => magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (0, 0)) x = 0 All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi✝:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0i:ℕhi:i.succ < d.succj:ℕhj:j.succ < d.succ⊢ Space.deriv l.succ (fun x => magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (⟨i.succ, hi⟩, ⟨j.succ, hj⟩)) x = 0 conv_lhs => d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi✝:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0i:ℕhi:i.succ < d.succj:ℕhj:j.succ < d.succx:Space (d + 1)| magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (⟨i.succ, hi⟩, ⟨j.succ, hj⟩) rw [← Fin.succ_mk _ _ (d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi✝:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0i:ℕhi:i.succ < d.succj:ℕhj:j.succ < d.succx:Space (d + 1)⊢ i < d All goals completed! 🐙)] rw [← Fin.succ_mk _ _ (d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi✝:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0i:ℕhi:i.succ < d.succj:ℕhj:j.succ < d.succx:Space (d + 1)⊢ j < d All goals completed! 🐙)] d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi✝:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0i:ℕhi:i.succ < d.succj:ℕhj:j.succ < d.succx:Space (d + 1)| 0 All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succ⊢ Space.deriv l.succ (fun x => magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (0, ⟨j.succ, hj⟩)) x = 0 conv_lhs => d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succx:Space (d + 1)| magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (0, ⟨j.succ, hj⟩) rw [← Fin.succ_mk _ _ (d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succx:Space (d + 1)⊢ j < d All goals completed! 🐙)] d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succx:Space (d + 1)| -E₀ ⟨j, ⋯⟩ / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ ⟨j, ⋯⟩) All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succ⊢ Space.deriv l.succ (fun x => magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (⟨j.succ, hj⟩, 0)) x = 0 conv_lhs => d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succx:Space (d + 1)| magneticFieldMatrix 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x (⟨j.succ, hj⟩, 0) rw [← Fin.succ_mk _ _ (d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succx:Space (d + 1)⊢ j < d All goals completed! 🐙)] d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex✝:Space d.succi:Fin d.succj✝:Fin d.succl:Fin dtransverse_deriv_cos_eq_zero:∀ (C a k b : ℝ) (l : Fin d) (y : Space d.succ), Space.deriv l.succ (fun x => C * cos (a - k * x.val 0 + b)) y = 0j:ℕhj:j.succ < d.succx:Space (d + 1)| E₀ ⟨j, ⋯⟩ / 𝓕.c.val * cos (𝓕.c.val * k * t.val - k * x.val 0 + φ ⟨j, ⋯⟩) All goals completed! 🐙d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -E₀ i / 𝓕.c.val * (sin (𝓕.c.val * k * t.val - k * x.val 0 + φ i) * (k * if 0 = 0 then 1 else 0)) = -(E₀ i * k) / 𝓕.c.val * sin (𝓕.c.val * k * t.val - k * x.val 0 + φ i) d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -E₀ i / 𝓕.c.val * (sin (𝓕.c.val * k * t.val - k * x.val 0 + φ i) * k) = -(E₀ i * k) / 𝓕.c.val * sin (𝓕.c.val * k * t.val - k * x.val 0 + φ i) All goals completed! 🐙

F. Maxwell's equations for a harmonic wave

d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ 𝓕.μ₀ * 𝓕.ε₀ * (-k * 𝓕.c.val * E₀ i * sin (k * 𝓕.c.val * t.val - k * x.val 0 + φ i)) = -E₀ i * k / 𝓕.c.val * sin (𝓕.c.val * k * t.val - k * x.val 0 + φ i)d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ -(𝓕.μ₀ * 𝓕.ε₀ * 𝓕.c.val ^ 2 * E₀ i * sin (k * (𝓕.c.val * t.val - x.val 0) + φ i)) = -(E₀ i * sin (k * (𝓕.c.val * t.val - x.val 0) + φ i))d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ 𝓕.μ₀ * 𝓕.ε₀ * (𝓕.μ₀⁻¹ * 𝓕.ε₀⁻¹) * E₀ i = E₀ i ∨ sin (k * (𝓕.c.val * t.val - x.val 0) + φ i) = 0d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ True ∨ sin (k * (𝓕.c.val * t.val - x.val 0) + φ i) = 0d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝt:Timex:Space d.succi:Fin d⊢ Differentiable ℝ fun t => electricField 𝓕.c (harmonicWaveX 𝓕 k E₀ φ) t x All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝ⊢ ContDiff ℝ (↑⊤) (harmonicWaveX 𝓕 k E₀ φ).val All goals completed! 🐙 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝ⊢ ContDiff ℝ (↑⊤) 0 d:ℕ𝓕:FreeSpacek:ℝhk:k ≠ 0E₀:Fin d → ℝφ:Fin d → ℝ⊢ ContDiff ℝ ↑⊤ fun x => 0 All goals completed! 🐙

G. The harmonic wave is a plane wave

All goals completed! 🐙

H. Polarization ellipse of the harmonic wave