2024-10-15 11:29:18 +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
|
|
|
|
|
-/
|
|
|
|
|
import HepLean.SpaceTime.WeylFermion.Basic
|
|
|
|
|
import HepLean.SpaceTime.WeylFermion.Contraction
|
|
|
|
|
import Mathlib.LinearAlgebra.TensorProduct.Matrix
|
|
|
|
|
import HepLean.SpaceTime.WeylFermion.Two
|
|
|
|
|
/-!
|
|
|
|
|
|
|
|
|
|
# Metrics of Weyl fermions
|
|
|
|
|
|
|
|
|
|
We define the metrics for Weyl fermions, often denoted `ε` in the literature.
|
|
|
|
|
These allow us to go from left-handed to alt-left-handed Weyl fermions and back,
|
2024-10-15 11:39:40 +00:00
|
|
|
|
and from right-handed to alt-right-handed Weyl fermions and back.
|
2024-10-15 11:29:18 +00:00
|
|
|
|
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
namespace Fermion
|
|
|
|
|
noncomputable section
|
|
|
|
|
|
|
|
|
|
open Matrix
|
|
|
|
|
open MatrixGroups
|
|
|
|
|
open Complex
|
|
|
|
|
open TensorProduct
|
|
|
|
|
open CategoryTheory.MonoidalCategory
|
|
|
|
|
|
2024-10-15 11:53:24 +00:00
|
|
|
|
/-- The raw `2x2` matrix corresponding to the metric for fermions. -/
|
2024-10-15 11:29:18 +00:00
|
|
|
|
def metricRaw : Matrix (Fin 2) (Fin 2) ℂ := !![0, 1; -1, 0]
|
|
|
|
|
|
|
|
|
|
lemma comm_metricRaw (M : SL(2,ℂ)) : M.1 * metricRaw = metricRaw * (M.1⁻¹)ᵀ := by
|
|
|
|
|
rw [metricRaw]
|
|
|
|
|
rw [SpaceTime.SL2C.inverse_coe, eta_fin_two M.1]
|
|
|
|
|
rw [SpecialLinearGroup.coe_inv, Matrix.adjugate_fin_two,
|
|
|
|
|
Matrix.mul_fin_two, eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᵀ]
|
|
|
|
|
simp only [Fin.isValue, mul_zero, mul_neg, mul_one, zero_add, add_zero, transpose_apply, of_apply,
|
|
|
|
|
cons_val', cons_val_zero, empty_val', cons_val_fin_one, cons_val_one, head_fin_const, head_cons,
|
|
|
|
|
cons_mul, Nat.succ_eq_add_one, Nat.reduceAdd, vecMul_cons, zero_smul, tail_cons, one_smul,
|
|
|
|
|
empty_vecMul, neg_smul, neg_cons, neg_neg, neg_empty, empty_mul, Equiv.symm_apply_apply]
|
|
|
|
|
|
|
|
|
|
lemma metricRaw_comm (M : SL(2,ℂ)) : metricRaw * M.1 = (M.1⁻¹)ᵀ * metricRaw := by
|
|
|
|
|
rw [metricRaw]
|
|
|
|
|
rw [SpaceTime.SL2C.inverse_coe, eta_fin_two M.1]
|
|
|
|
|
rw [SpecialLinearGroup.coe_inv, Matrix.adjugate_fin_two,
|
|
|
|
|
Matrix.mul_fin_two, eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᵀ]
|
|
|
|
|
simp only [Fin.isValue, zero_mul, one_mul, zero_add, neg_mul, add_zero, transpose_apply, of_apply,
|
|
|
|
|
cons_val', cons_val_zero, empty_val', cons_val_fin_one, cons_val_one, head_fin_const, head_cons,
|
|
|
|
|
cons_mul, Nat.succ_eq_add_one, Nat.reduceAdd, vecMul_cons, smul_cons, smul_eq_mul, mul_zero,
|
|
|
|
|
mul_one, smul_empty, tail_cons, neg_smul, mul_neg, neg_cons, neg_neg, neg_zero, neg_empty,
|
|
|
|
|
empty_vecMul, add_cons, empty_add_empty, empty_mul, Equiv.symm_apply_apply]
|
|
|
|
|
|
2024-10-15 11:39:40 +00:00
|
|
|
|
lemma star_comm_metricRaw (M : SL(2,ℂ)) : M.1.map star * metricRaw = metricRaw * ((M.1)⁻¹)ᴴ := by
|
2024-10-15 11:29:18 +00:00
|
|
|
|
rw [metricRaw]
|
|
|
|
|
rw [SpaceTime.SL2C.inverse_coe, eta_fin_two M.1]
|
|
|
|
|
rw [SpecialLinearGroup.coe_inv, Matrix.adjugate_fin_two,
|
|
|
|
|
eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᴴ]
|
|
|
|
|
rw [eta_fin_two (!![M.1 0 0, M.1 0 1; M.1 1 0, M.1 1 1].map star)]
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
lemma metricRaw_comm_star (M : SL(2,ℂ)) : metricRaw * M.1.map star = ((M.1)⁻¹)ᴴ * metricRaw := by
|
|
|
|
|
rw [metricRaw]
|
|
|
|
|
rw [SpaceTime.SL2C.inverse_coe, eta_fin_two M.1]
|
|
|
|
|
rw [SpecialLinearGroup.coe_inv, Matrix.adjugate_fin_two,
|
|
|
|
|
eta_fin_two !![M.1 1 1, -M.1 0 1; -M.1 1 0, M.1 0 0]ᴴ]
|
|
|
|
|
rw [eta_fin_two (!![M.1 0 0, M.1 0 1; M.1 1 0, M.1 1 1].map star)]
|
|
|
|
|
simp
|
|
|
|
|
|
|
|
|
|
/-- The metric `εₐₐ` as an element of `(leftHanded ⊗ leftHanded).V`. -/
|
|
|
|
|
def leftMetricVal : (leftHanded ⊗ leftHanded).V :=
|
|
|
|
|
leftLeftToMatrix.symm (- metricRaw)
|
|
|
|
|
|
|
|
|
|
/-- The metric `εₐₐ` as a morphism `𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ leftHanded`,
|
|
|
|
|
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
|
|
|
|
def leftMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ leftHanded where
|
|
|
|
|
hom := {
|
|
|
|
|
toFun := fun a =>
|
|
|
|
|
let a' : ℂ := a
|
|
|
|
|
a' • leftMetricVal,
|
|
|
|
|
map_add' := fun x y => by
|
|
|
|
|
simp only [add_smul]
|
|
|
|
|
map_smul' := fun m x => by
|
|
|
|
|
simp only [smul_smul]
|
|
|
|
|
rfl}
|
|
|
|
|
comm M := by
|
|
|
|
|
ext x : 2
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
|
|
|
|
Action.tensorUnit_ρ', CategoryTheory.Category.id_comp, Action.tensor_ρ', ModuleCat.coe_comp,
|
|
|
|
|
Function.comp_apply]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
let x' : ℂ := x
|
|
|
|
|
change x' • leftMetricVal =
|
|
|
|
|
(TensorProduct.map (leftHanded.ρ M) (leftHanded.ρ M)) (x' • leftMetricVal)
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, _root_.map_smul]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
apply congrArg
|
2024-10-15 11:53:24 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, leftMetricVal, map_neg, neg_inj]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
erw [leftLeftToMatrix_ρ_symm]
|
|
|
|
|
apply congrArg
|
|
|
|
|
rw [comm_metricRaw, mul_assoc, ← @transpose_mul]
|
|
|
|
|
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
|
|
|
|
|
not_false_eq_true, mul_nonsing_inv, transpose_one, mul_one]
|
|
|
|
|
|
|
|
|
|
/-- The metric `εᵃᵃ` as an element of `(altLeftHanded ⊗ altLeftHanded).V`. -/
|
|
|
|
|
def altLeftMetricVal : (altLeftHanded ⊗ altLeftHanded).V :=
|
|
|
|
|
altLeftaltLeftToMatrix.symm metricRaw
|
|
|
|
|
|
|
|
|
|
/-- The metric `εᵃᵃ` as a morphism `𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altLeftHanded ⊗ altLeftHanded`,
|
|
|
|
|
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
|
|
|
|
def altLeftMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altLeftHanded ⊗ altLeftHanded where
|
|
|
|
|
hom := {
|
|
|
|
|
toFun := fun a =>
|
|
|
|
|
let a' : ℂ := a
|
|
|
|
|
a' • altLeftMetricVal,
|
|
|
|
|
map_add' := fun x y => by
|
|
|
|
|
simp only [add_smul]
|
|
|
|
|
map_smul' := fun m x => by
|
|
|
|
|
simp only [smul_smul]
|
|
|
|
|
rfl}
|
|
|
|
|
comm M := by
|
|
|
|
|
ext x : 2
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
|
|
|
|
Action.tensorUnit_ρ', CategoryTheory.Category.id_comp, Action.tensor_ρ', ModuleCat.coe_comp,
|
|
|
|
|
Function.comp_apply]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
let x' : ℂ := x
|
|
|
|
|
change x' • altLeftMetricVal =
|
|
|
|
|
(TensorProduct.map (altLeftHanded.ρ M) (altLeftHanded.ρ M)) (x' • altLeftMetricVal)
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, _root_.map_smul]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
apply congrArg
|
2024-10-15 11:53:24 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, altLeftMetricVal]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
erw [altLeftaltLeftToMatrix_ρ_symm]
|
|
|
|
|
apply congrArg
|
|
|
|
|
rw [← metricRaw_comm, mul_assoc]
|
|
|
|
|
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
|
|
|
|
|
not_false_eq_true, mul_nonsing_inv, mul_one]
|
|
|
|
|
|
|
|
|
|
/-- The metric `ε_{dot a}_{dot a}` as an element of `(rightHanded ⊗ rightHanded).V`. -/
|
|
|
|
|
def rightMetricVal : (rightHanded ⊗ rightHanded).V :=
|
|
|
|
|
rightRightToMatrix.symm (- metricRaw)
|
|
|
|
|
|
|
|
|
|
/-- The metric `ε_{dot a}_{dot a}` as a morphism `𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ rightHanded`,
|
|
|
|
|
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
|
|
|
|
def rightMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ rightHanded where
|
|
|
|
|
hom := {
|
|
|
|
|
toFun := fun a =>
|
|
|
|
|
let a' : ℂ := a
|
|
|
|
|
a' • rightMetricVal,
|
|
|
|
|
map_add' := fun x y => by
|
|
|
|
|
simp only [add_smul]
|
|
|
|
|
map_smul' := fun m x => by
|
|
|
|
|
simp only [smul_smul]
|
|
|
|
|
rfl}
|
|
|
|
|
comm M := by
|
|
|
|
|
ext x : 2
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
|
|
|
|
Action.tensorUnit_ρ', CategoryTheory.Category.id_comp, Action.tensor_ρ', ModuleCat.coe_comp,
|
|
|
|
|
Function.comp_apply]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
let x' : ℂ := x
|
|
|
|
|
change x' • rightMetricVal =
|
|
|
|
|
(TensorProduct.map (rightHanded.ρ M) (rightHanded.ρ M)) (x' • rightMetricVal)
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, _root_.map_smul]
|
|
|
|
|
apply congrArg
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, rightMetricVal, map_neg, neg_inj]
|
|
|
|
|
trans rightRightToMatrix.symm ((M.1).map star * metricRaw * ((M.1).map star)ᵀ)
|
|
|
|
|
· apply congrArg
|
|
|
|
|
rw [star_comm_metricRaw, mul_assoc]
|
|
|
|
|
have h1 : ((M.1)⁻¹ᴴ * ((M.1).map star)ᵀ) = 1 := by
|
|
|
|
|
trans (M.1)⁻¹ᴴ * ((M.1))ᴴ
|
|
|
|
|
· rfl
|
|
|
|
|
rw [← @conjTranspose_mul]
|
|
|
|
|
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
|
|
|
|
|
not_false_eq_true, mul_nonsing_inv, conjTranspose_one]
|
|
|
|
|
rw [h1]
|
|
|
|
|
simp
|
|
|
|
|
· rw [← rightRightToMatrix_ρ_symm metricRaw M]
|
|
|
|
|
rfl
|
|
|
|
|
|
|
|
|
|
/-- The metric `ε^{dot a}^{dot a}` as an element of `(altRightHanded ⊗ altRightHanded).V`. -/
|
|
|
|
|
def altRightMetricVal : (altRightHanded ⊗ altRightHanded).V :=
|
|
|
|
|
altRightAltRightToMatrix.symm (metricRaw)
|
|
|
|
|
|
|
|
|
|
/-- The metric `ε^{dot a}^{dot a}` as a morphism
|
|
|
|
|
`𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altRightHanded ⊗ altRightHanded`,
|
|
|
|
|
making manifest its invariance under the action of `SL(2,ℂ)`. -/
|
|
|
|
|
def altRightMetric : 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ altRightHanded ⊗ altRightHanded where
|
|
|
|
|
hom := {
|
|
|
|
|
toFun := fun a =>
|
|
|
|
|
let a' : ℂ := a
|
|
|
|
|
a' • altRightMetricVal,
|
|
|
|
|
map_add' := fun x y => by
|
|
|
|
|
simp only [add_smul]
|
|
|
|
|
map_smul' := fun m x => by
|
|
|
|
|
simp only [smul_smul]
|
|
|
|
|
rfl}
|
|
|
|
|
comm M := by
|
|
|
|
|
ext x : 2
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, Action.instMonoidalCategory_tensorUnit_V,
|
|
|
|
|
Action.tensorUnit_ρ', CategoryTheory.Category.id_comp, Action.tensor_ρ', ModuleCat.coe_comp,
|
|
|
|
|
Function.comp_apply]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
let x' : ℂ := x
|
|
|
|
|
change x' • altRightMetricVal =
|
|
|
|
|
(TensorProduct.map (altRightHanded.ρ M) (altRightHanded.ρ M)) (x' • altRightMetricVal)
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V, _root_.map_smul]
|
|
|
|
|
apply congrArg
|
|
|
|
|
simp only [Action.instMonoidalCategory_tensorObj_V]
|
|
|
|
|
trans altRightAltRightToMatrix.symm
|
|
|
|
|
(((M.1)⁻¹).conjTranspose * metricRaw * (((M.1)⁻¹).conjTranspose)ᵀ)
|
|
|
|
|
· rw [altRightMetricVal]
|
|
|
|
|
apply congrArg
|
|
|
|
|
rw [← metricRaw_comm_star, mul_assoc]
|
|
|
|
|
have h1 : ((M.1).map star * (M.1)⁻¹ᴴᵀ) = 1 := by
|
|
|
|
|
refine transpose_eq_one.mp ?_
|
|
|
|
|
rw [@transpose_mul]
|
2024-10-15 11:39:40 +00:00
|
|
|
|
simp only [transpose_transpose, RCLike.star_def]
|
2024-10-15 11:29:18 +00:00
|
|
|
|
change (M.1)⁻¹ᴴ * (M.1)ᴴ = 1
|
|
|
|
|
rw [← @conjTranspose_mul]
|
|
|
|
|
simp
|
|
|
|
|
rw [h1, mul_one]
|
|
|
|
|
· rw [← altRightAltRightToMatrix_ρ_symm metricRaw M]
|
|
|
|
|
rfl
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
end Fermion
|