2024-05-21 06:21:51 -04:00
|
|
|
|
/-
|
|
|
|
|
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
|
|
|
|
|
Released under Apache 2.0 license.
|
|
|
|
|
Authors: Joseph Tooby-Smith
|
|
|
|
|
-/
|
2024-06-25 07:06:32 -04:00
|
|
|
|
import HepLean.SpaceTime.LorentzGroup.Basic
|
2024-06-26 14:04:18 -04:00
|
|
|
|
import HepLean.Mathematics.SO3.Basic
|
2024-05-21 06:21:51 -04:00
|
|
|
|
import Mathlib.Topology.Constructions
|
|
|
|
|
/-!
|
|
|
|
|
# Rotations
|
|
|
|
|
|
2024-07-02 10:13:52 -04:00
|
|
|
|
This file describes the embedding of `SO(3)` into `LorentzGroup 3`.
|
|
|
|
|
|
|
|
|
|
## TODO
|
|
|
|
|
|
|
|
|
|
Generalize to arbitrary dimensions.
|
|
|
|
|
|
2024-05-21 06:21:51 -04:00
|
|
|
|
-/
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
2024-07-02 10:13:52 -04:00
|
|
|
|
namespace LorentzGroup
|
2024-05-21 06:21:51 -04:00
|
|
|
|
open GroupTheory
|
|
|
|
|
|
2024-05-22 13:34:53 -04:00
|
|
|
|
/-- Given a element of `SO(3)` the matrix corresponding to a space-time rotation. -/
|
2024-05-22 09:18:12 -04:00
|
|
|
|
@[simp]
|
2024-07-02 10:13:52 -04:00
|
|
|
|
def SO3ToMatrix (A : SO(3)) : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℝ :=
|
|
|
|
|
(Matrix.fromBlocks 1 0 0 A.1)
|
2024-05-22 09:18:12 -04:00
|
|
|
|
|
2024-07-02 10:13:52 -04:00
|
|
|
|
lemma SO3ToMatrix_in_LorentzGroup (A : SO(3)) : SO3ToMatrix A ∈ LorentzGroup 3 := by
|
|
|
|
|
rw [LorentzGroup.mem_iff_dual_mul_self]
|
|
|
|
|
simp only [minkowskiMetric.dual, minkowskiMatrix.as_block, SO3ToMatrix,
|
2024-05-22 09:18:12 -04:00
|
|
|
|
Matrix.fromBlocks_transpose, Matrix.transpose_one, Matrix.transpose_zero,
|
2024-07-02 10:13:52 -04:00
|
|
|
|
Matrix.fromBlocks_multiply, mul_one, Matrix.mul_zero, add_zero, Matrix.zero_mul, Matrix.mul_one,
|
|
|
|
|
neg_mul, one_mul, zero_add, Matrix.mul_neg, neg_zero, mul_neg, neg_neg,
|
|
|
|
|
Matrix.mul_eq_one_comm.mpr A.2.2, Matrix.fromBlocks_one]
|
2024-05-21 06:21:51 -04:00
|
|
|
|
|
2024-05-22 13:34:53 -04:00
|
|
|
|
lemma SO3ToMatrix_injective : Function.Injective SO3ToMatrix := by
|
|
|
|
|
intro A B h
|
|
|
|
|
erw [Equiv.apply_eq_iff_eq] at h
|
|
|
|
|
have h1 := congrArg Matrix.toBlocks₂₂ h
|
2024-07-02 10:13:52 -04:00
|
|
|
|
erw [Matrix.toBlocks_fromBlocks₂₂, Matrix.toBlocks_fromBlocks₂₂] at h1
|
2024-05-22 13:34:53 -04:00
|
|
|
|
apply Subtype.eq
|
|
|
|
|
exact h1
|
|
|
|
|
|
|
|
|
|
/-- Given a element of `SO(3)` the element of the Lorentz group corresponding to a
|
|
|
|
|
space-time rotation. -/
|
2024-07-02 10:13:52 -04:00
|
|
|
|
def SO3ToLorentz : SO(3) →* LorentzGroup 3 where
|
|
|
|
|
toFun A := ⟨SO3ToMatrix A, SO3ToMatrix_in_LorentzGroup A⟩
|
2024-05-22 13:34:53 -04:00
|
|
|
|
map_one' := by
|
|
|
|
|
apply Subtype.eq
|
|
|
|
|
simp only [SO3ToMatrix, Nat.reduceAdd, Matrix.reindex_apply, lorentzGroupIsGroup_one_coe]
|
|
|
|
|
erw [Matrix.fromBlocks_one]
|
|
|
|
|
map_mul' A B := by
|
|
|
|
|
apply Subtype.eq
|
|
|
|
|
simp [Matrix.fromBlocks_multiply]
|
|
|
|
|
|
2024-05-21 06:21:51 -04:00
|
|
|
|
|
2024-07-02 10:13:52 -04:00
|
|
|
|
end LorentzGroup
|
2024-05-21 06:21:51 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end
|