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

The Scalar Potential

i. Overview

The electromagnetic potential is given by A = (1/c φ, \vec A) where φ is the scalar potential and \vec A is the vector potential.

In this module we define the scalar potential, and prove lemmas about it.

Since A is relativistic it is a function of SpaceTime d, whilst the scalar potential is non-relativistic and is therefore a function of Time and Space d.

ii. Key results

    ElectromagneticPotential.scalarPotential : The scalar potential from an electromagnetic potential.

iii. Table of contents

    A. Definition of the Scalar Potential

    B. Relation to constructors

    C. Smoothness of the Scalar Potential

    D. Differentiability of the Scalar Potential

iv. References

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

A. Definition of the Scalar Potential

B. Relation to constructors

@[simp] lemma ofScalarPotential_scalarPotential {d} (c : SpeedOfLight) (φ : Time Space d ) : (ofScalarPotential c φ).scalarPotential c = φ := d:c:SpeedOfLightφ:Time Space d scalarPotential c (ofScalarPotential c φ) = φ d:c:SpeedOfLightφ:Time Space d ((timeSlice c) fun x => c.val * ((timeSlice c).symm φ x / c.val)) = φ d:c:SpeedOfLightφ:Time Space d ((timeSlice c) fun x => (timeSlice c).symm φ x) = φ All goals completed! 🐙@[simp] lemma ofStaticScalarPotential_scalarPotential {d} (c : SpeedOfLight) (φ : Space d ) : (ofStaticScalarPotential c φ).scalarPotential c = fun _ => φ := d:c:SpeedOfLightφ:Space d scalarPotential c (ofStaticScalarPotential c φ) = fun x => φ All goals completed! 🐙@[simp] lemma ofVectorPotential_scalarPotential {d} (c : SpeedOfLight) (A : Time Space d EuclideanSpace (Fin d)) : (ofVectorPotential c A).scalarPotential = 0 := d:c:SpeedOfLightA:Time Space d EuclideanSpace (Fin d)scalarPotential 1 (ofVectorPotential c A) = 0 d:c:SpeedOfLightA:Time Space d EuclideanSpace (Fin d)(timeSlice fun x => 0) = 0 All goals completed! 🐙@[simp] lemma ofStaticVectorPotential_scalarPotential {d} (c : SpeedOfLight) (A : Space d EuclideanSpace (Fin d)) : (ofStaticVectorPotential c A).scalarPotential = 0 := d:c:SpeedOfLightA:Space d EuclideanSpace (Fin d)scalarPotential 1 (ofStaticVectorPotential c A) = 0 All goals completed! 🐙@[simp] lemma ofPotentials_scalarPotential {d} (c : SpeedOfLight) (φ : Time Space d ) (A : Time Space d EuclideanSpace (Fin d)) : (ofPotentials c φ A).scalarPotential c = φ := d:c:SpeedOfLightφ:Time Space d A:Time Space d EuclideanSpace (Fin d)scalarPotential c (ofPotentials c φ A) = φ d:c:SpeedOfLightφ:Time Space d A:Time Space d EuclideanSpace (Fin d)((timeSlice c) fun x => c.val * ((timeSlice c).symm φ x / c.val)) = φ d:c:SpeedOfLightφ:Time Space d A:Time Space d EuclideanSpace (Fin d)((timeSlice c) fun x => (timeSlice c).symm φ x) = φ All goals completed! 🐙@[simp] lemma ofStaticPotentials_scalarPotential {d} (c : SpeedOfLight) (φ : Space d ) (A : Space d EuclideanSpace (Fin d)) : (ofStaticPotentials c φ A).scalarPotential c = fun _ => φ := d:c:SpeedOfLightφ:Space d A:Space d EuclideanSpace (Fin d)scalarPotential c (ofStaticPotentials c φ A) = fun x => φ All goals completed! 🐙

C. Smoothness of the Scalar Potential

We prove various lemmas about the smoothness of the scalar potential.

n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valh1: (i : Fin 1 Fin d), ContDiff n fun x => A.val x iContDiff n fun x => c.val * A.val x (Sum.inl 0) n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valh1: (i : Fin 1 Fin d), ContDiff n fun x => A.val x iContDiff n fun x => c.valn:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valh1: (i : Fin 1 Fin d), ContDiff n fun x => A.val x iContDiff n fun x => A.val x (Sum.inl 0) n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valh1: (i : Fin 1 Fin d), ContDiff n fun x => A.val x iContDiff n fun x => c.val All goals completed! 🐙 All goals completed! 🐙@[fun_prop] lemma scalarPotential_contDiff_space {n} {d} (c : SpeedOfLight) (A : ElectromagneticPotential d) (hA : ContDiff n A) (t : Time) : ContDiff n (A.scalarPotential c t) := n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valt:TimeContDiff n (scalarPotential c A t) n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valt:TimeContDiff n ((scalarPotential c A) fun x => (t, x)) n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valt:TimeContDiff n (scalarPotential c A)n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valt:TimeContDiff n fun x => (t, x) n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valt:TimeContDiff n (scalarPotential c A) All goals completed! 🐙 n:WithTop ℕ∞d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valt:TimeContDiff n fun x => (t, x) All goals completed! 🐙@[fun_prop] lemma scalarPotential_contDiff_space_of_smooth {n : } {d} (c : SpeedOfLight) (A : ElectromagneticPotential d) (hA : ContDiff A) (t : Time) : ContDiff n (A.scalarPotential c t) := n:d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff A.valt:TimeContDiff (↑n) (scalarPotential c A t) n:d:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff A.valt:TimeContDiff (↑n) A.val All goals completed! 🐙lemma scalarPotential_contDiff_time {n} {d} (c : SpeedOfLight) (A : ElectromagneticPotential d) (hA : ContDiff n A) (x : Space d) : ContDiff n (A.scalarPotential c · x) := n:ℕ∞ωd:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valx:Space dContDiff n fun x_1 => scalarPotential c A x_1 x n:ℕ∞ωd:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valx:Space dContDiff n ((scalarPotential c A) fun t => (t, x)) n:ℕ∞ωd:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valx:Space dContDiff n (scalarPotential c A)n:ℕ∞ωd:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valx:Space dContDiff n fun t => (t, x) n:ℕ∞ωd:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valx:Space dContDiff n (scalarPotential c A) All goals completed! 🐙 n:ℕ∞ωd:c:SpeedOfLightA:ElectromagneticPotential dhA:ContDiff n A.valx:Space dContDiff n fun t => (t, x) All goals completed! 🐙

d. Differentiability of the Scalar Potential

We prove various lemmas about the differentiability of the scalar potential.

d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valh1: (i : Fin 1 Fin d), Differentiable fun x => A.val x iDifferentiable fun x => c.val * A.val x (Sum.inl 0) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valh1: (i : Fin 1 Fin d), Differentiable fun x => A.val x iDifferentiable fun x => c.vald:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valh1: (i : Fin 1 Fin d), Differentiable fun x => A.val x iDifferentiable fun x => A.val x (Sum.inl 0) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valh1: (i : Fin 1 Fin d), Differentiable fun x => A.val x iDifferentiable fun x => c.val All goals completed! 🐙 All goals completed! 🐙lemma scalarPotential_differentiable_space {d} (c : SpeedOfLight) (A : ElectromagneticPotential d) (hA : Differentiable A) (t : Time) : Differentiable (A.scalarPotential c t) := d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valt:TimeDifferentiable (scalarPotential c A t) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valt:TimeDifferentiable ((scalarPotential c A) fun x => (t, x)) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valt:TimeDifferentiable (scalarPotential c A)d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valt:TimeDifferentiable fun x => (t, x) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valt:TimeDifferentiable (scalarPotential c A) All goals completed! 🐙 d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valt:TimeDifferentiable fun x => (t, x) All goals completed! 🐙lemma scalarPotential_differentiable_time {d} (c : SpeedOfLight) (A : ElectromagneticPotential d) (hA : Differentiable A) (x : Space d) : Differentiable (A.scalarPotential c · x) := d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valx:Space dDifferentiable fun x_1 => scalarPotential c A x_1 x d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valx:Space dDifferentiable ((scalarPotential c A) fun t => (t, x)) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valx:Space dDifferentiable (scalarPotential c A)d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valx:Space dDifferentiable fun t => (t, x) d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valx:Space dDifferentiable (scalarPotential c A) All goals completed! 🐙 d:c:SpeedOfLightA:ElectromagneticPotential dhA:Differentiable A.valx:Space dDifferentiable fun t => (t, x) All goals completed! 🐙