101 lines
3.3 KiB
Text
101 lines
3.3 KiB
Text
![]() |
/-
|
|||
|
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
|
|||
|
Released under Apache 2.0 license.
|
|||
|
Authors: Joseph Tooby-Smith
|
|||
|
-/
|
|||
|
import HepLean.SpaceTime.Metric
|
|||
|
/-!
|
|||
|
# The Lorentz Group
|
|||
|
|
|||
|
We define the Lorentz group, and show it is a closed subgroup General Linear Group.
|
|||
|
|
|||
|
## TODO
|
|||
|
|
|||
|
- Show that the Lorentz is a Lie group.
|
|||
|
- Define the proper Lorentz group.
|
|||
|
- Define the restricted Lorentz group, and prove it is connected.
|
|||
|
|
|||
|
-/
|
|||
|
|
|||
|
noncomputable section
|
|||
|
|
|||
|
namespace spaceTime
|
|||
|
|
|||
|
open Manifold
|
|||
|
open Matrix
|
|||
|
open Complex
|
|||
|
open ComplexConjugate
|
|||
|
|
|||
|
/-- The Lorentz group as a subgroup of the general linear group over the reals. -/
|
|||
|
def lorentzGroup : Subgroup (GeneralLinearGroup (Fin 4) ℝ) where
|
|||
|
carrier := {Λ | ∀ (x y : spaceTime), ηLin (Λ *ᵥ x) (Λ *ᵥ y) = ηLin x y}
|
|||
|
mul_mem' {a b} := by
|
|||
|
intros ha hb x y
|
|||
|
simp only [Units.val_mul, mulVec_mulVec]
|
|||
|
rw [← mulVec_mulVec, ← mulVec_mulVec, ha, hb]
|
|||
|
one_mem' := by
|
|||
|
intros x y
|
|||
|
simp
|
|||
|
inv_mem' {a} := by
|
|||
|
intros ha x y
|
|||
|
simp only [coe_units_inv, ← ha ((a.1⁻¹) *ᵥ x) ((a.1⁻¹) *ᵥ y), mulVec_mulVec]
|
|||
|
have hx : (a.1 * (a.1)⁻¹) = 1 := by
|
|||
|
simp only [@Units.mul_eq_one_iff_inv_eq, coe_units_inv]
|
|||
|
simp [hx]
|
|||
|
|
|||
|
/-- The Lorentz group is a topological group with the subset topology. -/
|
|||
|
instance : TopologicalGroup lorentzGroup :=
|
|||
|
Subgroup.instTopologicalGroupSubtypeMem lorentzGroup
|
|||
|
|
|||
|
lemma mem_lorentzGroup_iff (Λ : GeneralLinearGroup (Fin 4) ℝ) :
|
|||
|
Λ ∈ lorentzGroup ↔ ∀ (x y : spaceTime), ηLin (Λ *ᵥ x) (Λ *ᵥ y) = ηLin x y := by
|
|||
|
rfl
|
|||
|
|
|||
|
lemma mem_lorentzGroup_iff' (Λ : GeneralLinearGroup (Fin 4) ℝ) :
|
|||
|
Λ ∈ lorentzGroup ↔ ∀ (x y : spaceTime), ηLin (x) ((η * Λ.1ᵀ * η * Λ.1) *ᵥ y) = ηLin x y := by
|
|||
|
rw [mem_lorentzGroup_iff]
|
|||
|
apply Iff.intro
|
|||
|
intro h
|
|||
|
intro x y
|
|||
|
have h1 := h x y
|
|||
|
rw [ηLin_mulVec_left, mulVec_mulVec] at h1
|
|||
|
exact h1
|
|||
|
intro h
|
|||
|
intro x y
|
|||
|
rw [ηLin_mulVec_left, mulVec_mulVec]
|
|||
|
exact h x y
|
|||
|
|
|||
|
lemma mem_lorentzGroup_iff'' (Λ : GL (Fin 4) ℝ) :
|
|||
|
Λ ∈ lorentzGroup ↔ η * Λ.1ᵀ * η * Λ.1 = 1 := by
|
|||
|
rw [mem_lorentzGroup_iff', ηLin_matrix_eq_identity_iff (η * Λ.1ᵀ * η * Λ.1)]
|
|||
|
apply Iff.intro
|
|||
|
· simp_all only [ηLin_apply_apply, implies_true, iff_true, one_mulVec]
|
|||
|
· simp_all only [ηLin_apply_apply, mulVec_mulVec, implies_true]
|
|||
|
|
|||
|
lemma det_lorentzGroup (Λ : lorentzGroup) : Λ.1.1.det = 1 ∨ Λ.1.1.det = -1 := by
|
|||
|
simpa [← sq, det_one, det_mul, det_mul, det_mul, det_transpose, det_η] using
|
|||
|
(congrArg det ((mem_lorentzGroup_iff'' Λ.1).mp Λ.2))
|
|||
|
|
|||
|
/-- A continous map from `GL (Fin 4) ℝ` to `Matrix (Fin 4) (Fin 4) ℝ` for which the Lorentz
|
|||
|
group is the kernal. -/
|
|||
|
def lorentzMap (Λ : GL (Fin 4) ℝ) : Matrix (Fin 4) (Fin 4) ℝ := η * Λ.1ᵀ * η * Λ.1
|
|||
|
|
|||
|
lemma lorentzMap_continuous : Continuous lorentzMap := by
|
|||
|
apply Continuous.mul _ Units.continuous_val
|
|||
|
apply Continuous.mul _ continuous_const
|
|||
|
exact Continuous.mul continuous_const (Continuous.matrix_transpose (Units.continuous_val))
|
|||
|
|
|||
|
lemma lorentzGroup_kernal : lorentzGroup = lorentzMap ⁻¹' {1} := by
|
|||
|
ext Λ
|
|||
|
erw [mem_lorentzGroup_iff'' Λ]
|
|||
|
rfl
|
|||
|
|
|||
|
theorem lorentzGroup_isClosed : IsClosed (lorentzGroup : Set (GeneralLinearGroup (Fin 4) ℝ)) := by
|
|||
|
rw [lorentzGroup_kernal]
|
|||
|
exact continuous_iff_isClosed.mp lorentzMap_continuous {1} isClosed_singleton
|
|||
|
|
|||
|
|
|||
|
end spaceTime
|
|||
|
|
|||
|
end
|