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.Basic
public import Physlib.Mathematics.Distribution.BasicLorentz group actions related to SpaceTime
i. Overview
We already have a Lorentz group action on SpaceTime d, in this module
we define the induced action on Schwartz functions and distributions.
ii. Key results
schwartzAction : Defines the action of the Lorentz group on Schwartz functions.
An instance of DistribMulAction for the Lorentz group acting on distributions.
iii. Table of contents
A. Lorentz group action on Schwartz functions
A.1. The definition of the action
A.2. Basic properties of the action
A.3. Injectivity of the action
A.4. Surjectivity of the action
B. Lorentz group action on distributions
B.1. The SMul instance
B.2. The DistribMulAction instance
B.3. The SMulCommClass instance
B.4. Action as a linear map
iv. References
@[expose] public sectionattribute [-simp] Fintype.sum_sum_typeA. Lorentz group action on Schwartz functions
A.1. The definition of the action
The Lorentz group action on Schwartz functions taking the Lorentz group to continuous linear maps.
d:ℕΛ₁:↑(LorentzGroup d)Λ₂:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)x:SpaceTime d⊢ η (Λ₂⁻¹ • Λ₁⁻¹ • x) = ((compCLM ℝ ⋯ ⋯ * compCLM ℝ ⋯ ⋯) η) x
rfl All goals completed! 🐙A.2. Basic properties of the action
lemma schwartzAction_mul_apply {d} (Λ₁ Λ₂ : LorentzGroup d)
(η : 𝓢(SpaceTime d, ℝ)) :
schwartzAction Λ₂ (schwartzAction (Λ₁) η) =
schwartzAction (Λ₂ * Λ₁) η := by d:ℕΛ₁:↑(LorentzGroup d)Λ₂:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (schwartzAction Λ₂) ((schwartzAction Λ₁) η) = (schwartzAction (Λ₂ * Λ₁)) η
simp All goals completed! 🐙lemma schwartzAction_apply {d} (Λ : LorentzGroup d)
(η : 𝓢(SpaceTime d, ℝ)) (x : SpaceTime d) :
(schwartzAction Λ η) x = η (Λ⁻¹ • x) := rflA.3. Injectivity of the action
lemma schwartzAction_injective {d} (Λ : LorentzGroup d) :
Function.Injective (schwartzAction Λ) := by d:ℕΛ:↑(LorentzGroup d)⊢ Function.Injective ⇑(schwartzAction Λ)
intro η1 η2 h d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2⊢ η1 = η2
ext x d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime d⊢ η1 x = η2 x
have h1 : (schwartzAction Λ⁻¹ * schwartzAction Λ) η1 =
(schwartzAction Λ⁻¹ * schwartzAction Λ) η2 := by d:ℕΛ:↑(LorentzGroup d)⊢ Function.Injective ⇑(schwartzAction Λ) d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:(schwartzAction Λ⁻¹ * schwartzAction Λ) η1 = (schwartzAction Λ⁻¹ * schwartzAction Λ) η2⊢ η1 x = η2 x simp [h] d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:(schwartzAction Λ⁻¹ * schwartzAction Λ) η1 = (schwartzAction Λ⁻¹ * schwartzAction Λ) η2⊢ η1 x = η2 x d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:(schwartzAction Λ⁻¹ * schwartzAction Λ) η1 = (schwartzAction Λ⁻¹ * schwartzAction Λ) η2⊢ η1 x = η2 x
rw [← map_mul d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:(schwartzAction (Λ⁻¹ * Λ)) η1 = (schwartzAction (Λ⁻¹ * Λ)) η2⊢ η1 x = η2 x d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:(schwartzAction (Λ⁻¹ * Λ)) η1 = (schwartzAction (Λ⁻¹ * Λ)) η2⊢ η1 x = η2 x] at h1 d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:(schwartzAction (Λ⁻¹ * Λ)) η1 = (schwartzAction (Λ⁻¹ * Λ)) η2⊢ η1 x = η2 x
simp at h1 d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:η1 = η2⊢ η1 x = η2 x
rw [h1 d:ℕΛ:↑(LorentzGroup d)η1:𝓢(SpaceTime d, ℝ)η2:𝓢(SpaceTime d, ℝ)h:(schwartzAction Λ) η1 = (schwartzAction Λ) η2x:SpaceTime dh1:η1 = η2⊢ η2 x = η2 x All goals completed! 🐙] All goals completed! 🐙A.4. Surjectivity of the action
lemma schwartzAction_surjective {d} (Λ : LorentzGroup d) :
Function.Surjective (schwartzAction Λ) := by d:ℕΛ:↑(LorentzGroup d)⊢ Function.Surjective ⇑(schwartzAction Λ)
intro η d:ℕΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ ∃ a, (schwartzAction Λ) a = η
use (schwartzAction Λ⁻¹ η) h d:ℕΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (schwartzAction Λ) ((schwartzAction Λ⁻¹) η) = η
change (schwartzAction Λ * schwartzAction Λ⁻¹) η = _ h d:ℕΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (schwartzAction Λ * schwartzAction Λ⁻¹) η = η
rw [← map_mul h d:ℕΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (schwartzAction (Λ * Λ⁻¹)) η = η h d:ℕΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (schwartzAction (Λ * Λ⁻¹)) η = η] h d:ℕΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (schwartzAction (Λ * Λ⁻¹)) η = η
simp All goals completed! 🐙B. Lorentz group action on distributions
B.1. The SMul instance
instance : SMul (LorentzGroup d) ((SpaceTime d) →d[ℝ] M) where
smul Λ f := (Tensorial.actionCLM (realLorentzTensor d) Λ) ∘L f ∘L (schwartzAction Λ⁻¹)lemma lorentzGroup_smul_dist_apply (Λ : LorentzGroup d) (f : (SpaceTime d) →d[ℝ] M)
(η : 𝓢(SpaceTime d, ℝ)) : (Λ • f) η = Λ • (f (schwartzAction Λ⁻¹ η)) := rflB.2. The DistribMulAction instance
set_option synthInstance.maxHeartbeats 40000
instance : DistribMulAction (LorentzGroup d) ((SpaceTime d) →d[ℝ] M) where
one_smul f := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:(SpaceTime d)→d[ℝ] M⊢ 1 • f = f
ext η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Mf:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (1 • f) η = f η
simp [lorentzGroup_smul_dist_apply] All goals completed! 🐙
mul_smul Λ₁ Λ₂ f := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ₁:↑(LorentzGroup d)Λ₂:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ (Λ₁ * Λ₂) • f = Λ₁ • Λ₂ • f
ext η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ₁:↑(LorentzGroup d)Λ₂:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ ((Λ₁ * Λ₂) • f) η = (Λ₁ • Λ₂ • f) η
simp [lorentzGroup_smul_dist_apply, SemigroupAction.mul_smul] All goals completed! 🐙
smul_zero Λ := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)⊢ Λ • 0 = 0
ext η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ (Λ • 0) η = 0 η
rw [lorentzGroup_smul_dist_apply n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ Λ • 0 ((schwartzAction Λ⁻¹) η) = 0 η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ Λ • 0 ((schwartzAction Λ⁻¹) η) = 0 η] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)η:𝓢(SpaceTime d, ℝ)⊢ Λ • 0 ((schwartzAction Λ⁻¹) η) = 0 η
simp All goals completed! 🐙
smul_add Λ f1 f2 := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] M⊢ Λ • (f1 + f2) = Λ • f1 + Λ • f2
ext η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (Λ • (f1 + f2)) η = (Λ • f1 + Λ • f2) η
rw [lorentzGroup_smul_dist_apply n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (f1 + f2) ((schwartzAction Λ⁻¹) η) = (Λ • f1 + Λ • f2) η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (f1 + f2) ((schwartzAction Λ⁻¹) η) = (Λ • f1 + Λ • f2) η] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • (f1 + f2) ((schwartzAction Λ⁻¹) η) = (Λ • f1 + Λ • f2) η
simp only [_root_.add_apply, smul_add, lorentzGroup_smul_dist_apply] All goals completed! 🐙B.3. The SMulCommClass instance
instance : SMulCommClass ℝ (LorentzGroup d) ((SpaceTime d) →d[ℝ] M) where
smul_comm a Λ f := by n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Ma:ℝΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] M⊢ a • Λ • f = Λ • a • f
ext η n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Ma:ℝΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (a • Λ • f) η = (Λ • a • f) η
simp [lorentzGroup_smul_dist_apply] n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Ma:ℝΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ a • Λ • f ((schwartzAction Λ⁻¹) η) = Λ • a • f ((schwartzAction Λ⁻¹) η)
rw [SMulCommClass.smul_comm n:ℕd:ℕc:Fin n → realLorentzTensor.ColorM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space Ma:ℝΛ:↑(LorentzGroup d)f:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • a • f ((schwartzAction Λ⁻¹) η) = Λ • a • f ((schwartzAction Λ⁻¹) η) All goals completed! 🐙] All goals completed! 🐙B.4. Action as a linear map
The Lorentz action on distributions as a linear map.
def distActionLinearMap {d} {M : Type} [NormedAddCommGroup M]
[NormedSpace ℝ M] [Tensorial (realLorentzTensor d) c M] [T2Space M](Λ : LorentzGroup d) :
((SpaceTime d) →d[ℝ] M) →ₗ[ℝ] ((SpaceTime d) →d[ℝ] M) where
toFun f := Λ • f
map_add' f1 f2 := by n:ℕd✝:ℕc:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁷:NormedAddCommGroup M✝inst✝⁶:NormedSpace ℝ M✝inst✝⁵:(realLorentzTensor d✝).Tensorial c M✝inst✝⁴:T2Space M✝d:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] M⊢ Λ • (f1 + f2) = Λ • f1 + Λ • f2
ext η n:ℕd✝:ℕc:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁷:NormedAddCommGroup M✝inst✝⁶:NormedSpace ℝ M✝inst✝⁵:(realLorentzTensor d✝).Tensorial c M✝inst✝⁴:T2Space M✝d:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)f1:(SpaceTime d)→d[ℝ] Mf2:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (Λ • (f1 + f2)) η = (Λ • f1 + Λ • f2) η
simp [lorentzGroup_smul_dist_apply, _root_.add_apply, smul_add] All goals completed! 🐙
map_smul' a f := by n:ℕd✝:ℕc:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁷:NormedAddCommGroup M✝inst✝⁶:NormedSpace ℝ M✝inst✝⁵:(realLorentzTensor d✝).Tensorial c M✝inst✝⁴:T2Space M✝d:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)a:ℝf:(SpaceTime d)→d[ℝ] M⊢ Λ • a • f = (RingHom.id ℝ) a • Λ • f
ext η n:ℕd✝:ℕc:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁷:NormedAddCommGroup M✝inst✝⁶:NormedSpace ℝ M✝inst✝⁵:(realLorentzTensor d✝).Tensorial c M✝inst✝⁴:T2Space M✝d:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)a:ℝf:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ (Λ • a • f) η = ((RingHom.id ℝ) a • Λ • f) η
simp [lorentzGroup_smul_dist_apply] n:ℕd✝:ℕc:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁷:NormedAddCommGroup M✝inst✝⁶:NormedSpace ℝ M✝inst✝⁵:(realLorentzTensor d✝).Tensorial c M✝inst✝⁴:T2Space M✝d:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)a:ℝf:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ Λ • a • f ((schwartzAction Λ⁻¹) η) = a • Λ • f ((schwartzAction Λ⁻¹) η)
rw [← @smul_comm n:ℕd✝:ℕc:Fin n → realLorentzTensor.ColorM✝:Typeinst✝⁷:NormedAddCommGroup M✝inst✝⁶:NormedSpace ℝ M✝inst✝⁵:(realLorentzTensor d✝).Tensorial c M✝inst✝⁴:T2Space M✝d:ℕM:Typeinst✝³:NormedAddCommGroup Minst✝²:NormedSpace ℝ Minst✝¹:(realLorentzTensor d).Tensorial c Minst✝:T2Space MΛ:↑(LorentzGroup d)a:ℝf:(SpaceTime d)→d[ℝ] Mη:𝓢(SpaceTime d, ℝ)⊢ a • Λ • f ((schwartzAction Λ⁻¹) η) = a • Λ • f ((schwartzAction Λ⁻¹) η) All goals completed! 🐙] All goals completed! 🐙