2024-06-13 10:57:25 -04:00
|
|
|
|
/-
|
|
|
|
|
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
|
2024-07-12 16:39:44 -04:00
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
2024-06-13 10:57:25 -04:00
|
|
|
|
Authors: Joseph Tooby-Smith
|
|
|
|
|
-/
|
2024-11-09 17:29:43 +00:00
|
|
|
|
import HepLean.Lorentz.Group.Restricted
|
2025-01-10 21:33:56 +08:00
|
|
|
|
import HepLean.Lorentz.SL2C.SelfAdjoint
|
|
|
|
|
import Mathlib.Analysis.Complex.Polynomial.Basic -- Complex.isAlgClosed
|
2024-06-13 10:57:25 -04:00
|
|
|
|
/-!
|
|
|
|
|
# The group SL(2, ℂ) and it's relation to the Lorentz group
|
|
|
|
|
|
|
|
|
|
The aim of this file is to give the relationship between `SL(2, ℂ)` and the Lorentz group.
|
|
|
|
|
|
|
|
|
|
-/
|
2024-11-10 06:48:04 +00:00
|
|
|
|
namespace Lorentz
|
2024-06-13 10:57:25 -04:00
|
|
|
|
|
|
|
|
|
open Matrix
|
|
|
|
|
open MatrixGroups
|
|
|
|
|
open Complex
|
|
|
|
|
|
|
|
|
|
namespace SL2C
|
|
|
|
|
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
2024-10-03 07:15:48 +00:00
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
## Some basic properties about SL(2, ℂ)
|
|
|
|
|
|
|
|
|
|
Possibly to be moved to mathlib at some point.
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
lemma inverse_coe (M : SL(2, ℂ)) : M.1⁻¹ = (M⁻¹).1 := by
|
|
|
|
|
apply Matrix.inv_inj
|
2024-10-03 07:32:46 +00:00
|
|
|
|
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero, not_false_eq_true,
|
|
|
|
|
nonsing_inv_nonsing_inv, SpecialLinearGroup.coe_inv]
|
2024-10-03 07:15:48 +00:00
|
|
|
|
have h1 : IsUnit M.1.det := by
|
|
|
|
|
simp
|
|
|
|
|
rw [Matrix.inv_adjugate M.1 h1]
|
|
|
|
|
· simp
|
|
|
|
|
· simp
|
|
|
|
|
|
2024-10-16 10:39:11 +00:00
|
|
|
|
lemma transpose_coe (M : SL(2, ℂ)) : M.1ᵀ = (M.transpose).1 := rfl
|
2024-06-15 17:08:08 -04:00
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
## Representation of SL(2, ℂ) on spacetime
|
|
|
|
|
|
|
|
|
|
Through the correspondence between spacetime and self-adjoint matrices,
|
|
|
|
|
we can define a representation a representation of `SL(2, ℂ)` on spacetime.
|
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
|
2024-07-12 10:36:39 -04:00
|
|
|
|
/-- Given an element `M ∈ SL(2, ℂ)` the linear map from `selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ)` to
|
2024-07-19 17:00:32 -04:00
|
|
|
|
itself defined by `A ↦ M * A * Mᴴ`. -/
|
2024-06-13 10:57:25 -04:00
|
|
|
|
@[simps!]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
def toSelfAdjointMap (M : SL(2, ℂ)) :
|
2024-06-13 10:57:25 -04:00
|
|
|
|
selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ) →ₗ[ℝ] selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ) where
|
|
|
|
|
toFun A := ⟨M.1 * A.1 * Matrix.conjTranspose M,
|
|
|
|
|
by
|
|
|
|
|
noncomm_ring [selfAdjoint.mem_iff, star_eq_conjTranspose,
|
|
|
|
|
conjTranspose_mul, conjTranspose_conjTranspose,
|
|
|
|
|
(star_eq_conjTranspose A.1).symm.trans $ selfAdjoint.mem_iff.mp A.2]⟩
|
|
|
|
|
map_add' A B := by
|
2024-10-03 13:50:18 +00:00
|
|
|
|
simp only [AddSubgroup.coe_add, AddMemClass.mk_add_mk, Subtype.mk.injEq]
|
2024-06-13 10:57:25 -04:00
|
|
|
|
noncomm_ring [AddSubmonoid.coe_add, AddSubgroup.coe_toAddSubmonoid, AddSubmonoid.mk_add_mk,
|
|
|
|
|
Subtype.mk.injEq]
|
|
|
|
|
map_smul' r A := by
|
|
|
|
|
noncomm_ring [selfAdjoint.val_smul, Algebra.mul_smul_comm, Algebra.smul_mul_assoc,
|
|
|
|
|
RingHom.id_apply]
|
|
|
|
|
|
2024-11-11 07:02:33 +00:00
|
|
|
|
lemma toSelfAdjointMap_apply_det (M : SL(2, ℂ)) (A : selfAdjoint (Matrix (Fin 2) (Fin 2) ℂ)) :
|
|
|
|
|
det ((toSelfAdjointMap M) A).1 = det A.1 := by
|
|
|
|
|
simp only [LinearMap.coe_mk, AddHom.coe_mk, toSelfAdjointMap, det_mul,
|
2024-11-09 08:06:16 +00:00
|
|
|
|
selfAdjoint.mem_iff, det_conjTranspose, det_mul, det_one, RingHom.id_apply]
|
|
|
|
|
simp only [SpecialLinearGroup.det_coe, one_mul, star_one, mul_one]
|
|
|
|
|
|
2024-11-11 07:02:33 +00:00
|
|
|
|
lemma toSelfAdjointMap_apply_σSAL_inl (M : SL(2, ℂ)) :
|
|
|
|
|
toSelfAdjointMap M (PauliMatrix.σSAL (Sum.inl 0)) =
|
|
|
|
|
((‖M.1 0 0‖ ^ 2 + ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2) •
|
|
|
|
|
PauliMatrix.σSAL (Sum.inl 0) +
|
|
|
|
|
(- ((M.1 0 1).re * (M.1 1 1).re + (M.1 0 1).im * (M.1 1 1).im +
|
|
|
|
|
(M.1 0 0).im * (M.1 1 0).im + (M.1 0 0).re * (M.1 1 0).re)) • PauliMatrix.σSAL (Sum.inr 0)
|
|
|
|
|
+ ((- (M.1 0 0).re * (M.1 1 0).im + ↑(M.1 1 0).re * (M.1 0 0).im
|
2024-11-11 07:22:36 +00:00
|
|
|
|
- (M.1 0 1).re * (M.1 1 1).im + (M.1 0 1).im * (M.1 1 1).re)) • PauliMatrix.σSAL (Sum.inr 1)
|
2024-11-11 07:02:33 +00:00
|
|
|
|
+ ((- ‖M.1 0 0‖ ^ 2 - ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2) •
|
|
|
|
|
PauliMatrix.σSAL (Sum.inr 2) := by
|
|
|
|
|
simp only [toSelfAdjointMap, PauliMatrix.σSAL, Fin.isValue, Basis.coe_mk, PauliMatrix.σSAL',
|
|
|
|
|
PauliMatrix.σ0, LinearMap.coe_mk, AddHom.coe_mk, norm_eq_abs, neg_add_rev, PauliMatrix.σ1,
|
|
|
|
|
neg_of, neg_cons, neg_zero, neg_empty, neg_mul, PauliMatrix.σ2, neg_neg, PauliMatrix.σ3]
|
|
|
|
|
ext1
|
|
|
|
|
simp only [Fin.isValue, AddSubgroup.coe_add, selfAdjoint.val_smul, smul_of, smul_cons, real_smul,
|
|
|
|
|
ofReal_div, ofReal_add, ofReal_pow, ofReal_ofNat, mul_one, smul_zero, smul_empty, smul_neg,
|
|
|
|
|
ofReal_neg, ofReal_mul, neg_add_rev, neg_neg, of_add_of, add_cons, head_cons, add_zero,
|
|
|
|
|
tail_cons, zero_add, empty_add_empty, ofReal_sub]
|
|
|
|
|
conv => lhs; erw [← eta_fin_two 1, mul_one]
|
|
|
|
|
conv => lhs; lhs; rw [eta_fin_two M.1]
|
|
|
|
|
conv => lhs; rhs; rw [eta_fin_two M.1ᴴ]
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, conjTranspose_apply, RCLike.star_def, cons_mul, Nat.succ_eq_add_one,
|
|
|
|
|
Nat.reduceAdd, vecMul_cons, head_cons, smul_cons, smul_eq_mul, smul_empty, tail_cons,
|
|
|
|
|
empty_vecMul, add_zero, add_cons, empty_add_empty, empty_mul, Equiv.symm_apply_apply,
|
|
|
|
|
EmbeddingLike.apply_eq_iff_eq]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
rw [mul_conj', mul_conj', mul_conj', mul_conj']
|
|
|
|
|
ext x y
|
|
|
|
|
match x, y with
|
|
|
|
|
| 0, 0 =>
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, norm_eq_abs, cons_val', cons_val_zero, empty_val', cons_val_fin_one]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring_nf
|
|
|
|
|
| 0, 1 =>
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, norm_eq_abs, cons_val', cons_val_one, head_cons, empty_val',
|
|
|
|
|
cons_val_fin_one, cons_val_zero]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring_nf
|
|
|
|
|
rw [← re_add_im (M.1 0 0), ← re_add_im (M.1 0 1), ← re_add_im (M.1 1 0), ← re_add_im (M.1 1 1)]
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, map_add, conj_ofReal, _root_.map_mul, conj_I, mul_neg, add_re,
|
|
|
|
|
ofReal_re, mul_re, I_re, mul_zero, ofReal_im, I_im, mul_one, sub_self, add_zero, add_im,
|
|
|
|
|
mul_im, zero_add]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring_nf
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, I_sq, mul_neg, mul_one, neg_mul, neg_neg, one_mul, sub_neg_eq_add]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring
|
|
|
|
|
| 1, 0 =>
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, norm_eq_abs, cons_val', cons_val_zero, empty_val', cons_val_fin_one,
|
|
|
|
|
cons_val_one, head_fin_const]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring_nf
|
|
|
|
|
rw [← re_add_im (M.1 0 0), ← re_add_im (M.1 0 1), ← re_add_im (M.1 1 0), ← re_add_im (M.1 1 1)]
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, map_add, conj_ofReal, _root_.map_mul, conj_I, mul_neg, add_re,
|
|
|
|
|
ofReal_re, mul_re, I_re, mul_zero, ofReal_im, I_im, mul_one, sub_self, add_zero, add_im,
|
|
|
|
|
mul_im, zero_add]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring_nf
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, I_sq, mul_neg, mul_one, neg_mul, neg_neg, one_mul, sub_neg_eq_add]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring
|
|
|
|
|
| 1, 1 =>
|
2024-11-11 07:22:36 +00:00
|
|
|
|
simp only [Fin.isValue, norm_eq_abs, cons_val', cons_val_one, head_cons, empty_val',
|
|
|
|
|
cons_val_fin_one, head_fin_const]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
ring_nf
|
|
|
|
|
|
2024-11-10 06:57:41 +00:00
|
|
|
|
/-- The monoid homomorphisms from `SL(2, ℂ)` to matrices indexed by `Fin 1 ⊕ Fin 3`
|
|
|
|
|
formed by the action `M A Mᴴ`. -/
|
2024-11-09 08:06:16 +00:00
|
|
|
|
def toMatrix : SL(2, ℂ) →* Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℝ where
|
2024-11-11 07:02:33 +00:00
|
|
|
|
toFun M := LinearMap.toMatrix PauliMatrix.σSAL PauliMatrix.σSAL (toSelfAdjointMap M)
|
2024-06-13 10:57:25 -04:00
|
|
|
|
map_one' := by
|
2024-11-11 07:02:33 +00:00
|
|
|
|
simp only [toSelfAdjointMap, SpecialLinearGroup.coe_one, one_mul, conjTranspose_one,
|
2024-11-09 08:06:16 +00:00
|
|
|
|
mul_one, Subtype.coe_eta]
|
|
|
|
|
erw [LinearMap.toMatrix_one]
|
2024-06-13 10:57:25 -04:00
|
|
|
|
map_mul' M N := by
|
2024-11-09 08:06:16 +00:00
|
|
|
|
simp only
|
|
|
|
|
rw [← LinearMap.toMatrix_mul]
|
|
|
|
|
apply congrArg
|
|
|
|
|
ext1 x
|
2024-11-11 07:02:33 +00:00
|
|
|
|
simp only [toSelfAdjointMap, SpecialLinearGroup.coe_mul, conjTranspose_mul,
|
2024-11-09 08:06:16 +00:00
|
|
|
|
LinearMap.coe_mk, AddHom.coe_mk, LinearMap.mul_apply, Subtype.mk.injEq]
|
|
|
|
|
noncomm_ring
|
|
|
|
|
|
|
|
|
|
open Lorentz in
|
|
|
|
|
lemma toMatrix_apply_contrMod (M : SL(2, ℂ)) (v : ContrMod 3) :
|
|
|
|
|
(toMatrix M) *ᵥ v = ContrMod.toSelfAdjoint.symm
|
2024-11-11 07:02:33 +00:00
|
|
|
|
((toSelfAdjointMap M) (ContrMod.toSelfAdjoint v)) := by
|
2024-11-09 18:06:48 +00:00
|
|
|
|
simp only [ContrMod.mulVec, toMatrix, MonoidHom.coe_mk, OneHom.coe_mk]
|
2024-11-09 08:06:16 +00:00
|
|
|
|
obtain ⟨a, ha⟩ := ContrMod.toSelfAdjoint.symm.surjective v
|
|
|
|
|
subst ha
|
|
|
|
|
rw [LinearEquiv.apply_symm_apply]
|
2024-11-09 18:06:48 +00:00
|
|
|
|
simp only [ContrMod.toSelfAdjoint, LinearEquiv.trans_symm, LinearEquiv.symm_symm,
|
|
|
|
|
LinearEquiv.trans_apply]
|
2024-11-09 18:12:05 +00:00
|
|
|
|
change ContrMod.toFin1dℝEquiv.symm
|
2024-11-11 07:02:33 +00:00
|
|
|
|
((((LinearMap.toMatrix PauliMatrix.σSAL PauliMatrix.σSAL) (toSelfAdjointMap M)))
|
2024-11-09 18:06:48 +00:00
|
|
|
|
*ᵥ (((Finsupp.linearEquivFunOnFinite ℝ ℝ (Fin 1 ⊕ Fin 3)) (PauliMatrix.σSAL.repr a)))) = _
|
2024-11-09 08:06:16 +00:00
|
|
|
|
apply congrArg
|
|
|
|
|
erw [LinearMap.toMatrix_mulVec_repr]
|
|
|
|
|
rfl
|
2024-06-15 17:08:08 -04:00
|
|
|
|
|
2024-11-09 08:06:16 +00:00
|
|
|
|
lemma toMatrix_mem_lorentzGroup (M : SL(2, ℂ)) : toMatrix M ∈ LorentzGroup 3 := by
|
2024-07-02 10:13:52 -04:00
|
|
|
|
rw [LorentzGroup.mem_iff_norm]
|
2024-11-09 08:06:16 +00:00
|
|
|
|
intro x
|
|
|
|
|
apply ofReal_injective
|
|
|
|
|
rw [Lorentz.contrContrContractField.same_eq_det_toSelfAdjoint]
|
|
|
|
|
rw [toMatrix_apply_contrMod]
|
|
|
|
|
rw [LinearEquiv.apply_symm_apply]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
rw [toSelfAdjointMap_apply_det]
|
2024-11-09 08:06:16 +00:00
|
|
|
|
rw [Lorentz.contrContrContractField.same_eq_det_toSelfAdjoint]
|
|
|
|
|
|
|
|
|
|
/-- The group homomorphism from `SL(2, ℂ)` to the Lorentz group `𝓛`. -/
|
2024-06-13 10:57:25 -04:00
|
|
|
|
@[simps!]
|
2024-07-12 10:36:39 -04:00
|
|
|
|
def toLorentzGroup : SL(2, ℂ) →* LorentzGroup 3 where
|
2024-11-09 08:06:16 +00:00
|
|
|
|
toFun M := ⟨toMatrix M, toMatrix_mem_lorentzGroup M⟩
|
2024-06-13 10:57:25 -04:00
|
|
|
|
map_one' := by
|
2024-11-09 08:06:16 +00:00
|
|
|
|
simp only [_root_.map_one]
|
2024-06-13 10:57:25 -04:00
|
|
|
|
rfl
|
|
|
|
|
map_mul' M N := by
|
2024-11-09 08:06:16 +00:00
|
|
|
|
ext1
|
|
|
|
|
simp only [_root_.map_mul, lorentzGroupIsGroup_mul_coe]
|
|
|
|
|
|
2024-10-16 10:39:11 +00:00
|
|
|
|
lemma toLorentzGroup_eq_σSAL (M : SL(2, ℂ)) :
|
|
|
|
|
toLorentzGroup M = LinearMap.toMatrix
|
2024-11-11 07:02:33 +00:00
|
|
|
|
PauliMatrix.σSAL PauliMatrix.σSAL (toSelfAdjointMap M) := by
|
2024-10-16 10:39:11 +00:00
|
|
|
|
rfl
|
|
|
|
|
|
2024-11-11 07:02:33 +00:00
|
|
|
|
lemma toSelfAdjointMap_basis (i : Fin 1 ⊕ Fin 3) :
|
|
|
|
|
toSelfAdjointMap M (PauliMatrix.σSAL i) =
|
|
|
|
|
∑ j, (toLorentzGroup M).1 j i • PauliMatrix.σSAL j := by
|
2024-10-16 10:39:11 +00:00
|
|
|
|
rw [toLorentzGroup_eq_σSAL]
|
|
|
|
|
simp only [LinearMap.toMatrix_apply, Finset.univ_unique,
|
|
|
|
|
Fin.default_eq_zero, Fin.isValue, Finset.sum_singleton]
|
2024-10-16 10:57:46 +00:00
|
|
|
|
nth_rewrite 1 [← (Basis.sum_repr PauliMatrix.σSAL
|
2024-11-11 07:02:33 +00:00
|
|
|
|
((toSelfAdjointMap M) (PauliMatrix.σSAL i)))]
|
2024-10-19 10:34:30 +00:00
|
|
|
|
rfl
|
2024-10-16 10:39:11 +00:00
|
|
|
|
|
2024-11-11 07:02:33 +00:00
|
|
|
|
lemma toSelfAdjointMap_σSA (i : Fin 1 ⊕ Fin 3) :
|
|
|
|
|
toSelfAdjointMap M (PauliMatrix.σSA i) =
|
2024-10-16 10:39:11 +00:00
|
|
|
|
∑ j, (toLorentzGroup M⁻¹).1 i j • PauliMatrix.σSA j := by
|
2024-11-08 11:16:16 +00:00
|
|
|
|
have h1 : (toLorentzGroup M⁻¹).1 = minkowskiMatrix.dual (toLorentzGroup M).1 := by
|
2024-10-16 10:39:11 +00:00
|
|
|
|
simp
|
|
|
|
|
simp only [h1]
|
|
|
|
|
rw [PauliMatrix.σSA_minkowskiMetric_σSAL, _root_.map_smul]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
rw [toSelfAdjointMap_basis]
|
2024-10-16 10:39:11 +00:00
|
|
|
|
rw [Finset.smul_sum]
|
|
|
|
|
apply congrArg
|
|
|
|
|
funext j
|
|
|
|
|
rw [smul_smul, PauliMatrix.σSA_minkowskiMetric_σSAL, smul_smul]
|
|
|
|
|
apply congrFun
|
|
|
|
|
apply congrArg
|
2024-11-08 11:16:16 +00:00
|
|
|
|
exact Eq.symm (minkowskiMatrix.dual_apply_minkowskiMatrix ((toLorentzGroup M).1) i j)
|
2024-10-16 10:39:11 +00:00
|
|
|
|
|
2024-11-11 07:02:33 +00:00
|
|
|
|
/-- The first column of the Lorentz matrix formed from an element of `SL(2, ℂ)`. -/
|
|
|
|
|
lemma toLorentzGroup_fst_col (M : SL(2, ℂ)) :
|
|
|
|
|
(fun μ => (toLorentzGroup M).1 μ (Sum.inl 0)) = fun μ =>
|
|
|
|
|
match μ with
|
|
|
|
|
| Sum.inl 0 => ((‖M.1 0 0‖ ^ 2 + ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2)
|
2024-11-11 07:22:36 +00:00
|
|
|
|
| Sum.inr 0 => (- ((M.1 0 1).re * (M.1 1 1).re + (M.1 0 1).im * (M.1 1 1).im +
|
2024-11-11 07:02:33 +00:00
|
|
|
|
(M.1 0 0).im * (M.1 1 0).im + (M.1 0 0).re * (M.1 1 0).re))
|
|
|
|
|
| Sum.inr 1 => ((- (M.1 0 0).re * (M.1 1 0).im + ↑(M.1 1 0).re * (M.1 0 0).im
|
|
|
|
|
- (M.1 0 1).re * (M.1 1 1).im + (M.1 0 1).im * (M.1 1 1).re))
|
|
|
|
|
| Sum.inr 2 => ((- ‖M.1 0 0‖ ^ 2 - ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2) := by
|
2024-11-11 07:22:36 +00:00
|
|
|
|
let k : Fin 1 ⊕ Fin 3 → ℝ := fun μ =>
|
2024-11-11 07:02:33 +00:00
|
|
|
|
match μ with
|
|
|
|
|
| Sum.inl 0 => ((‖M.1 0 0‖ ^ 2 + ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2)
|
2024-11-11 07:22:36 +00:00
|
|
|
|
| Sum.inr 0 => (- ((M.1 0 1).re * (M.1 1 1).re + (M.1 0 1).im * (M.1 1 1).im +
|
2024-11-11 07:02:33 +00:00
|
|
|
|
(M.1 0 0).im * (M.1 1 0).im + (M.1 0 0).re * (M.1 1 0).re))
|
|
|
|
|
| Sum.inr 1 => ((- (M.1 0 0).re * (M.1 1 0).im + ↑(M.1 1 0).re * (M.1 0 0).im
|
|
|
|
|
- (M.1 0 1).re * (M.1 1 1).im + (M.1 0 1).im * (M.1 1 1).re))
|
|
|
|
|
| Sum.inr 2 => ((- ‖M.1 0 0‖ ^ 2 - ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2)
|
|
|
|
|
change (fun μ => (toLorentzGroup M).1 μ (Sum.inl 0)) = k
|
|
|
|
|
have h1 : toSelfAdjointMap M (PauliMatrix.σSAL (Sum.inl 0)) = ∑ μ, k μ • PauliMatrix.σSAL μ := by
|
2024-12-13 10:04:26 +00:00
|
|
|
|
simp only [Fin.isValue, Fintype.sum_sum_type, Finset.univ_unique, Fin.default_eq_zero,
|
|
|
|
|
Finset.sum_singleton, Fin.sum_univ_three]
|
2024-11-11 07:02:33 +00:00
|
|
|
|
rw [toSelfAdjointMap_apply_σSAL_inl]
|
|
|
|
|
abel
|
|
|
|
|
rw [toSelfAdjointMap_basis] at h1
|
|
|
|
|
have h1x := sub_eq_zero_of_eq h1
|
|
|
|
|
rw [← Finset.sum_sub_distrib] at h1x
|
|
|
|
|
funext μ
|
|
|
|
|
refine sub_eq_zero.mp ?_
|
|
|
|
|
refine Fintype.linearIndependent_iff.mp PauliMatrix.σSAL.linearIndependent
|
|
|
|
|
(fun x => ((toLorentzGroup M).1 x (Sum.inl 0) - k x)) ?_ μ
|
|
|
|
|
rw [← h1x]
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
exact sub_smul ((toLorentzGroup M).1 x (Sum.inl 0)) (k x) (PauliMatrix.σSAL x)
|
|
|
|
|
|
|
|
|
|
/-- The first element of the image of `SL(2, ℂ)` in the Lorentz group. -/
|
|
|
|
|
lemma toLorentzGroup_inl_inl (M : SL(2, ℂ)) :
|
|
|
|
|
(toLorentzGroup M).1 (Sum.inl 0) (Sum.inl 0) =
|
|
|
|
|
((‖M.1 0 0‖ ^ 2 + ‖M.1 0 1‖ ^ 2 + ‖M.1 1 0‖ ^ 2 + ‖M.1 1 1‖ ^ 2) / 2) := by
|
|
|
|
|
change (fun μ => (toLorentzGroup M).1 μ (Sum.inl 0)) (Sum.inl 0) = _
|
|
|
|
|
rw [toLorentzGroup_fst_col]
|
|
|
|
|
|
|
|
|
|
/-- The image of `SL(2, ℂ)` in the Lorentz group is orthochronous. -/
|
|
|
|
|
lemma toLorentzGroup_isOrthochronous (M : SL(2, ℂ)) :
|
|
|
|
|
LorentzGroup.IsOrthochronous (toLorentzGroup M) := by
|
|
|
|
|
rw [LorentzGroup.IsOrthochronous]
|
|
|
|
|
rw [toLorentzGroup_inl_inl]
|
|
|
|
|
apply div_nonneg
|
|
|
|
|
· apply add_nonneg
|
|
|
|
|
· apply add_nonneg
|
|
|
|
|
· apply add_nonneg
|
|
|
|
|
· exact sq_nonneg _
|
|
|
|
|
· exact sq_nonneg _
|
|
|
|
|
· exact sq_nonneg _
|
|
|
|
|
· exact sq_nonneg _
|
|
|
|
|
· exact zero_le_two
|
|
|
|
|
|
2024-06-15 17:08:08 -04:00
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
## Homomorphism to the restricted Lorentz group
|
|
|
|
|
|
|
|
|
|
The homomorphism `toLorentzGroup` restricts to a homomorphism to the restricted Lorentz group.
|
|
|
|
|
In this section we will define this homomorphism.
|
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
|
2025-01-10 21:33:56 +08:00
|
|
|
|
/-- The determinant of the image of `SL(2, ℂ)` in the Lorentz group is one. -/
|
|
|
|
|
lemma toLorentzGroup_det_one (M : SL(2, ℂ)) : det (toLorentzGroup M).val = 1 :=
|
|
|
|
|
let U := M.val.schurTriangulationUnitary
|
|
|
|
|
let N := M.val.schurTriangulation.val
|
|
|
|
|
have h : M.val = U * N * star U := M.val.schur_triangulation
|
|
|
|
|
haveI : Invertible U.val := ⟨star U.val, U.property.left, U.property.right⟩
|
2025-01-11 20:09:29 +08:00
|
|
|
|
calc det (toLorentzGroup M).val
|
2025-01-10 21:33:56 +08:00
|
|
|
|
_ = LinearMap.det (toSelfAdjointMap' M) := LinearMap.det_toMatrix ..
|
|
|
|
|
_ = LinearMap.det (toSelfAdjointMap' (U * N * U.val⁻¹)) :=
|
|
|
|
|
suffices star U = U.val⁻¹ by rw [h, this]
|
2025-01-11 20:09:29 +08:00
|
|
|
|
calc star U.val
|
2025-01-10 21:33:56 +08:00
|
|
|
|
_ = star U.val * (U.val * U.val⁻¹) := by simp
|
|
|
|
|
_ = star U.val * U.val * U.val⁻¹ := by noncomm_ring
|
|
|
|
|
_ = U.val⁻¹ := by simp
|
|
|
|
|
_ = LinearMap.det (toSelfAdjointMap' N) := toSelfAdjointMap_similar_det U N
|
|
|
|
|
_ = 1 :=
|
|
|
|
|
suffices N.det = 1 from toSelfAdjointMap_det_one' M.val.schurTriangulation.property this
|
2025-01-11 20:09:29 +08:00
|
|
|
|
calc N.det
|
2025-01-10 21:33:56 +08:00
|
|
|
|
_ = det ((U * star U).val * N) := by simp
|
|
|
|
|
_ = det (U.val * N * star U.val) := det_mul_right_comm ..
|
|
|
|
|
_ = M.val.det := congrArg det h.symm
|
|
|
|
|
_ = 1 := M.property
|
2024-09-18 08:24:26 -04:00
|
|
|
|
|
2025-02-02 03:17:17 +08:00
|
|
|
|
/-- The homomorphism from `SL(2, ℂ)` to the restricted Lorentz group. -/
|
2024-09-18 08:24:26 -04:00
|
|
|
|
informal_lemma toRestrictedLorentzGroup where
|
2025-02-02 03:17:17 +08:00
|
|
|
|
deps := [``toLorentzGroup, ``toLorentzGroup_det_one, ``toLorentzGroup_isOrthochronous,
|
2024-09-18 08:24:26 -04:00
|
|
|
|
``LorentzGroup.Restricted]
|
|
|
|
|
|
2025-01-22 10:32:39 +00:00
|
|
|
|
TODO "Define homomorphism from `SL(2, ℂ)` to the restricted Lorentz group."
|
2024-06-13 10:57:25 -04:00
|
|
|
|
end
|
|
|
|
|
end SL2C
|
|
|
|
|
|
2024-11-10 06:48:04 +00:00
|
|
|
|
end Lorentz
|