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.SpaceTime.TimeSlice

The Lorentz Current Density

i. Overview

In this module we define the Lorentz current density and its decomposition into charge density and current density. The Lorentz current density is often called the four-current and given then the symbol J.

The current density is given in terms of the charge density ρ and the current density \vec j as J = (c ρ, \vec j).

ii. Key results

    LorentzCurrentDensity : The type of Lorentz current densities.

    LorentzCurrentDensity.chargeDensity : The charge density associated with a Lorentz current density.

    LorentzCurrentDensity.currentDensity : The current density associated with a Lorentz current density.

iii. Table of contents

    A. The Lorentz Current Density

    B. The underlying charge

      B.1. Charge density of zero Lorentz current density

      B.2. Differentiability of the charge density

      B.3. Smoothness of the charge density

    C. The underlying current density

      C.1. current density of zero Lorentz current density

      C.2. Differentiability of the current density

      C.3. Smoothness of the current density

iv. References

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

A. The Lorentz Current Density

The Lorentz current density is a Lorentz Vector field on spacetime.

The Lorentz current density, also called four-current.

abbrev LorentzCurrentDensity (d : := 3) := SpaceTime d Lorentz.Vector d

B. The underlying charge

lemma chargeDensity_eq_timeSlice {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} : J.chargeDensity c = timeSlice c (fun x => (1 / (c : )) J x (Sum.inl 0)) := d:c:SpeedOfLightJ:LorentzCurrentDensity dchargeDensity c J = (timeSlice c) fun x => (1 / c.val) J x (Sum.inl 0) All goals completed! 🐙

B.1. Charge density of zero Lorentz current density

@[simp] lemma chargeDensity_zero {d : } {c : SpeedOfLight}: chargeDensity c (0 : LorentzCurrentDensity d) = 0 := d:c:SpeedOfLightchargeDensity c 0 = 0 d:c:SpeedOfLightFunction.curry ((fun x => 0) (toTimeAndSpace c).symm) = 0 All goals completed! 🐙

B.2. Differentiability of the charge density

d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jh1: (i : Fin 1 Fin d), Differentiable fun x => J x iDifferentiable fun x => (1 / c.val) J x (Sum.inl 0) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jh1: (i : Fin 1 Fin d), Differentiable fun x => J x iDifferentiable fun i => J i (Sum.inl 0) All goals completed! 🐙lemma chargeDensity_differentiable_space {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} (hJ : Differentiable J) (t : Time) : Differentiable (fun x => J.chargeDensity c t x) := d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable fun x => chargeDensity c J t x d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable ((chargeDensity c J) fun x => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable (chargeDensity c J)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable fun x => (t, x) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable (chargeDensity c J) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable fun x => (t, x) All goals completed! 🐙

B.3. Smoothness of the charge density

n:WithTop ℕ∞d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:ContDiff n Jh1: (i : Fin 1 Fin d), ContDiff n fun x => J x iContDiff n fun x => (1 / c.val) J x (Sum.inl 0) n:WithTop ℕ∞d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:ContDiff n Jh1: (i : Fin 1 Fin d), ContDiff n fun x => J x iContDiff n fun y => J y (Sum.inl 0) All goals completed! 🐙

C. The underlying current density

lemma currentDensity_eq_timeSlice {d : } {J : LorentzCurrentDensity d} : J.currentDensity c = timeSlice c (fun x => WithLp.toLp 2 fun i => J x (Sum.inr i)) := c:SpeedOfLightd:J:LorentzCurrentDensity dcurrentDensity c J = (timeSlice c) fun x => WithLp.toLp 2 fun i => J x (Sum.inr i) All goals completed! 🐙

C.1. current density of zero Lorentz current density

@[simp] lemma currentDensity_zero {d : } {c : SpeedOfLight}: currentDensity c (0 : LorentzCurrentDensity d) = 0 := d:c:SpeedOfLightcurrentDensity c 0 = 0 d:c:SpeedOfLightFunction.curry ((fun x => WithLp.toLp 2 fun i => 0) (toTimeAndSpace c).symm) = 0 All goals completed! 🐙

C.2. Differentiability of the current density

d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jh1: (i : Fin 1 Fin d), Differentiable fun x => J x iDifferentiable fun x => WithLp.toLp 2 fun i => J x (Sum.inr i) All goals completed! 🐙lemma currentDensity_apply_differentiable {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} (hJ : Differentiable J) (i : Fin d) : Differentiable (fun t x => J.currentDensity c t x i) := d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Ji:Fin dDifferentiable fun t x => (currentDensity c J t x).ofLp i d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Ji:Fin dDifferentiable ((EuclideanSpace.proj i) (currentDensity c J)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Ji:Fin dDifferentiable (EuclideanSpace.proj i)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Ji:Fin dDifferentiable (currentDensity c J) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Ji:Fin dDifferentiable (EuclideanSpace.proj i) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Ji:Fin dDifferentiable (currentDensity c J) All goals completed! 🐙lemma currentDensity_differentiable_space {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} (hJ : Differentiable J) (t : Time) : Differentiable (fun x => J.currentDensity c t x) := d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable fun x => currentDensity c J t x d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable ((currentDensity c J) fun x => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable (currentDensity c J)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable fun x => (t, x) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable (currentDensity c J) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:TimeDifferentiable fun x => (t, x) All goals completed! 🐙lemma currentDensity_apply_differentiable_space {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} (hJ : Differentiable J) (t : Time) (i : Fin d) : Differentiable (fun x => J.currentDensity c t x i) := d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable fun x => (currentDensity c J t x).ofLp i d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable ((EuclideanSpace.proj i) (currentDensity c J) fun x => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable (EuclideanSpace.proj i)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable ((currentDensity c J) fun x => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable (EuclideanSpace.proj i) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable ((currentDensity c J) fun x => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable (currentDensity c J)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable fun x => (t, x) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable (currentDensity c J) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jt:Timei:Fin dDifferentiable fun x => (t, x) All goals completed! 🐙lemma currentDensity_differentiable_time {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} (hJ : Differentiable J) (x : Space d) : Differentiable (fun t => J.currentDensity c t x) := d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space dDifferentiable fun t => currentDensity c J t x d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space dDifferentiable ((currentDensity c J) fun t => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space dDifferentiable (currentDensity c J)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space dDifferentiable fun t => (t, x) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space dDifferentiable (currentDensity c J) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space dDifferentiable fun t => (t, x) All goals completed! 🐙lemma currentDensity_apply_differentiable_time {d : } {c : SpeedOfLight} {J : LorentzCurrentDensity d} (hJ : Differentiable J) (x : Space d) (i : Fin d) : Differentiable (fun t => J.currentDensity c t x i) := d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable fun t => (currentDensity c J t x).ofLp i d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable ((EuclideanSpace.proj i) (currentDensity c J) fun t => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable (EuclideanSpace.proj i)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable ((currentDensity c J) fun t => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable (EuclideanSpace.proj i) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable ((currentDensity c J) fun t => (t, x)) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable (currentDensity c J)d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable fun t => (t, x) d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable (currentDensity c J) All goals completed! 🐙 d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:Differentiable Jx:Space di:Fin dDifferentiable fun t => (t, x) All goals completed! 🐙

C.3. Smoothness of the current density

n:WithTop ℕ∞d:c:SpeedOfLightJ:LorentzCurrentDensity dhJ:ContDiff n Jh1: (i : Fin 1 Fin d), ContDiff n fun x => J x iContDiff n fun x => WithLp.toLp 2 fun i => J x (Sum.inr i) All goals completed! 🐙