2024-10-15 13:19:46 +00:00
|
|
|
|
/-
|
|
|
|
|
Copyright (c) 2024 Joseph Tooby-Smith. All rights reserved.
|
|
|
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
|
|
|
Authors: Joseph Tooby-Smith
|
|
|
|
|
-/
|
2024-11-09 17:41:00 +00:00
|
|
|
|
import HepLean.Lorentz.ComplexVector.Basic
|
2024-10-15 13:19:46 +00:00
|
|
|
|
import Mathlib.LinearAlgebra.TensorProduct.Matrix
|
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
# Tensor products of two complex Lorentz vectors
|
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
|
|
|
|
open Matrix
|
|
|
|
|
open MatrixGroups
|
|
|
|
|
open Complex
|
|
|
|
|
open TensorProduct
|
|
|
|
|
open CategoryTheory.MonoidalCategory
|
|
|
|
|
namespace Lorentz
|
|
|
|
|
|
|
|
|
|
/-- Equivalence of `complexContr ⊗ complexContr` to `4 x 4` complex matrices. -/
|
|
|
|
|
def contrContrToMatrix : (complexContr ⊗ complexContr).V ≃ₗ[ℂ]
|
|
|
|
|
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
|
|
|
|
|
(Basis.tensorProduct complexContrBasis complexContrBasis).repr ≪≫ₗ
|
|
|
|
|
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
|
|
|
|
|
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
|
|
|
|
|
|
2024-10-23 05:56:00 +00:00
|
|
|
|
/-- Expanding `contrContrToMatrix` in terms of the standard basis. -/
|
|
|
|
|
lemma contrContrToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
|
|
|
|
|
contrContrToMatrix.symm M =
|
|
|
|
|
∑ i, ∑ j, M i j • (complexContrBasis i ⊗ₜ[ℂ] complexContrBasis j) := by
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, contrContrToMatrix, LinearEquiv.trans_symm,
|
|
|
|
|
LinearEquiv.trans_apply, Basis.repr_symm_apply]
|
|
|
|
|
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ)]
|
|
|
|
|
· erw [Finset.sum_product]
|
|
|
|
|
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_))
|
|
|
|
|
erw [Basis.tensorProduct_apply complexContrBasis complexContrBasis i j]
|
|
|
|
|
rfl
|
|
|
|
|
· simp
|
|
|
|
|
|
2024-10-15 13:19:46 +00:00
|
|
|
|
/-- Equivalence of `complexCo ⊗ complexCo` to `4 x 4` complex matrices. -/
|
|
|
|
|
def coCoToMatrix : (complexCo ⊗ complexCo).V ≃ₗ[ℂ]
|
|
|
|
|
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
|
|
|
|
|
(Basis.tensorProduct complexCoBasis complexCoBasis).repr ≪≫ₗ
|
|
|
|
|
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
|
|
|
|
|
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
|
|
|
|
|
|
2024-10-17 11:43:33 +00:00
|
|
|
|
/-- Expanding `coCoToMatrix` in terms of the standard basis. -/
|
|
|
|
|
lemma coCoToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
|
|
|
|
|
coCoToMatrix.symm M = ∑ i, ∑ j, M i j • (complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j) := by
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, coCoToMatrix, LinearEquiv.trans_symm,
|
|
|
|
|
LinearEquiv.trans_apply, Basis.repr_symm_apply]
|
|
|
|
|
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ)]
|
|
|
|
|
· erw [Finset.sum_product]
|
|
|
|
|
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_))
|
|
|
|
|
erw [Basis.tensorProduct_apply complexCoBasis complexCoBasis i j]
|
|
|
|
|
rfl
|
|
|
|
|
· simp
|
|
|
|
|
|
2024-10-15 13:19:46 +00:00
|
|
|
|
/-- Equivalence of `complexContr ⊗ complexCo` to `4 x 4` complex matrices. -/
|
|
|
|
|
def contrCoToMatrix : (complexContr ⊗ complexCo).V ≃ₗ[ℂ]
|
|
|
|
|
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
|
|
|
|
|
(Basis.tensorProduct complexContrBasis complexCoBasis).repr ≪≫ₗ
|
|
|
|
|
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
|
|
|
|
|
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
|
|
|
|
|
|
2024-10-24 15:04:37 +00:00
|
|
|
|
/-- Expansion of `contrCoToMatrix` in terms of the standard basis. -/
|
|
|
|
|
lemma contrCoToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
|
|
|
|
|
contrCoToMatrix.symm M = ∑ i, ∑ j, M i j • (complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j) := by
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, contrCoToMatrix, LinearEquiv.trans_symm,
|
|
|
|
|
LinearEquiv.trans_apply, Basis.repr_symm_apply]
|
|
|
|
|
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ)]
|
|
|
|
|
· erw [Finset.sum_product]
|
|
|
|
|
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_))
|
|
|
|
|
erw [Basis.tensorProduct_apply complexContrBasis complexCoBasis i j]
|
|
|
|
|
rfl
|
|
|
|
|
· simp
|
|
|
|
|
|
2024-10-15 13:19:46 +00:00
|
|
|
|
/-- Equivalence of `complexCo ⊗ complexContr` to `4 x 4` complex matrices. -/
|
|
|
|
|
def coContrToMatrix : (complexCo ⊗ complexContr).V ≃ₗ[ℂ]
|
|
|
|
|
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
|
|
|
|
|
(Basis.tensorProduct complexCoBasis complexContrBasis).repr ≪≫ₗ
|
|
|
|
|
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
|
|
|
|
|
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
|
|
|
|
|
|
2024-10-24 15:04:37 +00:00
|
|
|
|
/-- Expansion of `coContrToMatrix` in terms of the standard basis. -/
|
|
|
|
|
lemma coContrToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
|
|
|
|
|
coContrToMatrix.symm M = ∑ i, ∑ j, M i j • (complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j) := by
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, coContrToMatrix, LinearEquiv.trans_symm,
|
|
|
|
|
LinearEquiv.trans_apply, Basis.repr_symm_apply]
|
|
|
|
|
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ)]
|
|
|
|
|
· erw [Finset.sum_product]
|
|
|
|
|
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_))
|
|
|
|
|
erw [Basis.tensorProduct_apply complexCoBasis complexContrBasis i j]
|
|
|
|
|
rfl
|
|
|
|
|
· simp
|
|
|
|
|
|
2024-10-15 13:19:46 +00:00
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
## Group actions
|
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
lemma contrContrToMatrix_ρ (v : (complexContr ⊗ complexContr).V) (M : SL(2,ℂ)) :
|
|
|
|
|
contrContrToMatrix (TensorProduct.map (complexContr.ρ M) (complexContr.ρ M) v) =
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * contrContrToMatrix v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ := by
|
|
|
|
|
nth_rewrite 1 [contrContrToMatrix]
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.trans_apply]
|
|
|
|
|
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
|
|
|
|
|
(complexContrBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(complexContrBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(TensorProduct.map (complexContr.ρ M) (complexContr.ρ M)))
|
|
|
|
|
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
|
|
|
|
|
((complexContrBasis.tensorProduct complexContrBasis).repr v)))
|
|
|
|
|
· apply congrArg
|
|
|
|
|
have h1 := (LinearMap.toMatrix_mulVec_repr (complexContrBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(complexContrBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(TensorProduct.map (complexContr.ρ M) (complexContr.ρ M)) v)
|
|
|
|
|
erw [h1]
|
|
|
|
|
rfl
|
|
|
|
|
rw [TensorProduct.toMatrix_map]
|
|
|
|
|
funext i j
|
|
|
|
|
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
|
|
|
|
|
((LinearMap.toMatrix complexContrBasis complexContrBasis) (complexContr.ρ M))
|
|
|
|
|
((LinearMap.toMatrix complexContrBasis complexContrBasis) (complexContr.ρ M)) (i, j) k)
|
|
|
|
|
* contrContrToMatrix v k.1 k.2) = _
|
|
|
|
|
erw [Finset.sum_product]
|
|
|
|
|
simp_rw [kroneckerMap_apply, Matrix.mul_apply, Matrix.transpose_apply]
|
2024-10-15 13:36:48 +00:00
|
|
|
|
have h1 : ∑ x, (∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 *
|
2024-10-15 13:19:46 +00:00
|
|
|
|
contrContrToMatrix v x1 x) * LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
|
2024-10-15 13:36:48 +00:00
|
|
|
|
= ∑ x, ∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1
|
2024-10-15 13:19:46 +00:00
|
|
|
|
* contrContrToMatrix v x1 x) * LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x := by
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
rw [Finset.sum_mul]
|
|
|
|
|
erw [h1]
|
|
|
|
|
rw [Finset.sum_comm]
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
congr
|
|
|
|
|
funext x1
|
|
|
|
|
simp only [complexContrBasis_ρ_apply, transpose_apply, Action.instMonoidalCategory_tensorObj_V]
|
|
|
|
|
ring
|
|
|
|
|
|
|
|
|
|
lemma coCoToMatrix_ρ (v : (complexCo ⊗ complexCo).V) (M : SL(2,ℂ)) :
|
|
|
|
|
coCoToMatrix (TensorProduct.map (complexCo.ρ M) (complexCo.ρ M) v) =
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ := by
|
|
|
|
|
nth_rewrite 1 [coCoToMatrix]
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.trans_apply]
|
|
|
|
|
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
|
|
|
|
|
(complexCoBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(complexCoBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(TensorProduct.map (complexCo.ρ M) (complexCo.ρ M))
|
|
|
|
|
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
|
|
|
|
|
((complexCoBasis.tensorProduct complexCoBasis).repr v))))
|
|
|
|
|
· apply congrArg
|
|
|
|
|
have h1 := (LinearMap.toMatrix_mulVec_repr (complexCoBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(complexCoBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(TensorProduct.map (complexCo.ρ M) (complexCo.ρ M)) v)
|
|
|
|
|
erw [h1]
|
|
|
|
|
rfl
|
|
|
|
|
rw [TensorProduct.toMatrix_map]
|
|
|
|
|
funext i j
|
|
|
|
|
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
|
|
|
|
|
((LinearMap.toMatrix complexCoBasis complexCoBasis) (complexCo.ρ M))
|
|
|
|
|
((LinearMap.toMatrix complexCoBasis complexCoBasis) (complexCo.ρ M)) (i, j) k)
|
|
|
|
|
* coCoToMatrix v k.1 k.2) = _
|
|
|
|
|
erw [Finset.sum_product]
|
|
|
|
|
simp_rw [kroneckerMap_apply, Matrix.mul_apply, Matrix.transpose_apply]
|
2024-10-15 13:36:48 +00:00
|
|
|
|
have h1 : ∑ x, (∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i *
|
2024-10-15 13:19:46 +00:00
|
|
|
|
coCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
|
2024-10-15 13:36:48 +00:00
|
|
|
|
= ∑ x, ∑ x1, ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i
|
2024-10-15 13:19:46 +00:00
|
|
|
|
* coCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j := by
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
rw [Finset.sum_mul]
|
|
|
|
|
erw [h1]
|
|
|
|
|
rw [Finset.sum_comm]
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
congr
|
|
|
|
|
funext x1
|
|
|
|
|
simp only [complexCoBasis_ρ_apply, transpose_apply, Action.instMonoidalCategory_tensorObj_V]
|
|
|
|
|
ring
|
|
|
|
|
|
|
|
|
|
lemma contrCoToMatrix_ρ (v : (complexContr ⊗ complexCo).V) (M : SL(2,ℂ)) :
|
|
|
|
|
contrCoToMatrix (TensorProduct.map (complexContr.ρ M) (complexCo.ρ M) v) =
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * contrCoToMatrix v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ := by
|
|
|
|
|
nth_rewrite 1 [contrCoToMatrix]
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.trans_apply]
|
|
|
|
|
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
|
|
|
|
|
(complexContrBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(complexContrBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(TensorProduct.map (complexContr.ρ M) (complexCo.ρ M))
|
|
|
|
|
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
|
|
|
|
|
((complexContrBasis.tensorProduct complexCoBasis).repr v))))
|
|
|
|
|
· apply congrArg
|
|
|
|
|
have h1 := (LinearMap.toMatrix_mulVec_repr (complexContrBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(complexContrBasis.tensorProduct complexCoBasis)
|
|
|
|
|
(TensorProduct.map (complexContr.ρ M) (complexCo.ρ M)) v)
|
|
|
|
|
erw [h1]
|
|
|
|
|
rfl
|
|
|
|
|
rw [TensorProduct.toMatrix_map]
|
|
|
|
|
funext i j
|
|
|
|
|
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
|
|
|
|
|
((LinearMap.toMatrix complexContrBasis complexContrBasis) (complexContr.ρ M))
|
|
|
|
|
((LinearMap.toMatrix complexCoBasis complexCoBasis) (complexCo.ρ M)) (i, j) k)
|
|
|
|
|
* contrCoToMatrix v k.1 k.2) = _
|
|
|
|
|
erw [Finset.sum_product]
|
|
|
|
|
simp_rw [kroneckerMap_apply, Matrix.mul_apply]
|
2024-10-15 13:36:48 +00:00
|
|
|
|
have h1 : ∑ x, (∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 *
|
2024-10-15 13:19:46 +00:00
|
|
|
|
contrCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
|
2024-10-15 13:36:48 +00:00
|
|
|
|
= ∑ x, ∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1
|
2024-10-15 13:19:46 +00:00
|
|
|
|
* contrCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j := by
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
rw [Finset.sum_mul]
|
|
|
|
|
erw [h1]
|
|
|
|
|
rw [Finset.sum_comm]
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
congr
|
|
|
|
|
funext x1
|
|
|
|
|
simp only [complexContrBasis_ρ_apply, complexCoBasis_ρ_apply, transpose_apply,
|
|
|
|
|
Action.instMonoidalCategory_tensorObj_V]
|
|
|
|
|
ring
|
|
|
|
|
|
|
|
|
|
lemma coContrToMatrix_ρ (v : (complexCo ⊗ complexContr).V) (M : SL(2,ℂ)) :
|
|
|
|
|
coContrToMatrix (TensorProduct.map (complexCo.ρ M) (complexContr.ρ M) v) =
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ := by
|
|
|
|
|
nth_rewrite 1 [coContrToMatrix]
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.trans_apply]
|
|
|
|
|
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
|
|
|
|
|
(complexCoBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(complexCoBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(TensorProduct.map (complexCo.ρ M) (complexContr.ρ M))
|
|
|
|
|
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
|
|
|
|
|
((complexCoBasis.tensorProduct complexContrBasis).repr v))))
|
|
|
|
|
· apply congrArg
|
|
|
|
|
have h1 := (LinearMap.toMatrix_mulVec_repr (complexCoBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(complexCoBasis.tensorProduct complexContrBasis)
|
|
|
|
|
(TensorProduct.map (complexCo.ρ M) (complexContr.ρ M)) v)
|
|
|
|
|
erw [h1]
|
|
|
|
|
rfl
|
|
|
|
|
rw [TensorProduct.toMatrix_map]
|
|
|
|
|
funext i j
|
|
|
|
|
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
|
|
|
|
|
((LinearMap.toMatrix complexCoBasis complexCoBasis) (complexCo.ρ M))
|
|
|
|
|
((LinearMap.toMatrix complexContrBasis complexContrBasis) (complexContr.ρ M)) (i, j) k)
|
|
|
|
|
* coContrToMatrix v k.1 k.2) = _
|
|
|
|
|
erw [Finset.sum_product]
|
|
|
|
|
simp_rw [kroneckerMap_apply, Matrix.mul_apply, Matrix.transpose_apply]
|
2024-10-15 13:36:48 +00:00
|
|
|
|
have h1 : ∑ x, (∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i *
|
2024-10-15 13:19:46 +00:00
|
|
|
|
coContrToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) j x
|
2024-10-15 13:36:48 +00:00
|
|
|
|
= ∑ x, ∑ x1, ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i
|
2024-10-15 13:19:46 +00:00
|
|
|
|
* coContrToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) j x := by
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
rw [Finset.sum_mul]
|
|
|
|
|
erw [h1]
|
|
|
|
|
rw [Finset.sum_comm]
|
|
|
|
|
congr
|
|
|
|
|
funext x
|
|
|
|
|
congr
|
|
|
|
|
funext x1
|
|
|
|
|
simp only [complexCoBasis_ρ_apply, complexContrBasis_ρ_apply, transpose_apply,
|
|
|
|
|
Action.instMonoidalCategory_tensorObj_V]
|
|
|
|
|
ring
|
|
|
|
|
|
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
## The symm version of the group actions.
|
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
lemma contrContrToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
|
|
|
|
|
TensorProduct.map (complexContr.ρ M) (complexContr.ρ M) (contrContrToMatrix.symm v) =
|
|
|
|
|
contrContrToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ) := by
|
|
|
|
|
have h1 := contrContrToMatrix_ρ (contrContrToMatrix.symm v) M
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.apply_symm_apply] at h1
|
|
|
|
|
rw [← h1]
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
lemma coCoToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
|
|
|
|
|
TensorProduct.map (complexCo.ρ M) (complexCo.ρ M) (coCoToMatrix.symm v) =
|
|
|
|
|
coCoToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹) := by
|
|
|
|
|
have h1 := coCoToMatrix_ρ (coCoToMatrix.symm v) M
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.apply_symm_apply] at h1
|
|
|
|
|
rw [← h1]
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
lemma contrCoToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
|
|
|
|
|
TensorProduct.map (complexContr.ρ M) (complexCo.ρ M) (contrCoToMatrix.symm v) =
|
|
|
|
|
contrCoToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹) := by
|
|
|
|
|
have h1 := contrCoToMatrix_ρ (contrCoToMatrix.symm v) M
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.apply_symm_apply] at h1
|
|
|
|
|
rw [← h1]
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
lemma coContrToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
|
|
|
|
|
TensorProduct.map (complexCo.ρ M) (complexContr.ρ M) (coContrToMatrix.symm v) =
|
|
|
|
|
coContrToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v *
|
|
|
|
|
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ) := by
|
|
|
|
|
have h1 := coContrToMatrix_ρ (coContrToMatrix.symm v) M
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, LinearEquiv.apply_symm_apply] at h1
|
|
|
|
|
rw [← h1]
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
end Lorentz
|
|
|
|
|
end
|