PhysLean/HepLean/SpaceTime/WeylFermion/Basic.lean

278 lines
10 KiB
Text
Raw Normal View History

2024-09-15 19:01:34 -04: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.Meta.Informal
2024-10-03 07:15:48 +00:00
import HepLean.SpaceTime.SL2C.Basic
import Mathlib.RepresentationTheory.Rep
import HepLean.SpaceTime.WeylFermion.Modules
import Mathlib.Logic.Equiv.TransferInstance
2024-09-15 19:01:34 -04:00
/-!
# Weyl fermions
2024-10-03 07:15:48 +00:00
A good reference for the material in this file is:
https://particle.physics.ucdavis.edu/modernsusy/slides/slideimages/spinorfeynrules.pdf
2024-09-17 05:23:09 -04:00
2024-09-15 19:01:34 -04:00
-/
2024-10-03 07:15:48 +00:00
namespace Fermion
noncomputable section
open Matrix
open MatrixGroups
open Complex
open TensorProduct
/-- The vector space ^2 carrying the fundamental representation of SL(2,C).
2024-10-16 10:39:11 +00:00
In index notation corresponds to a Weyl fermion with indices ψ^a. -/
2024-10-03 07:15:48 +00:00
def leftHanded : Rep SL(2,) := Rep.of {
toFun := fun M => {
toFun := fun (ψ : LeftHandedModule) =>
LeftHandedModule.toFin2Equiv.symm (M.1 *ᵥ ψ.toFin2),
map_add' := by
intro ψ ψ'
simp [mulVec_add]
map_smul' := by
intro r ψ
simp [mulVec_smul]}
map_one' := by
ext i
simp
map_mul' := fun M N => by
simp only [SpecialLinearGroup.coe_mul]
ext1 x
simp only [LinearMap.coe_mk, AddHom.coe_mk, LinearMap.mul_apply, LinearEquiv.apply_symm_apply,
mulVec_mulVec]}
/-- The standard basis on left-handed Weyl fermions. -/
def leftBasis : Basis (Fin 2) leftHanded := Basis.ofEquivFun
(Equiv.linearEquiv LeftHandedModule.toFin2Fun)
@[simp]
lemma leftBasis_ρ_apply (M : SL(2,)) (i j : Fin 2) :
(LinearMap.toMatrix leftBasis leftBasis) (leftHanded.ρ M) i j = M.1 i j := by
rw [LinearMap.toMatrix_apply]
2024-10-15 11:53:24 +00:00
simp only [leftBasis, Basis.coe_ofEquivFun, Basis.ofEquivFun_repr_apply]
change (M.1 *ᵥ (Pi.single j 1)) i = _
simp only [mulVec_single, mul_one]
2024-10-03 07:15:48 +00:00
/-- The vector space ^2 carrying the representation of SL(2,C) given by
2024-10-16 10:39:11 +00:00
M → (M⁻¹)ᵀ. In index notation corresponds to a Weyl fermion with indices ψ_a. -/
2024-10-03 07:15:48 +00:00
def altLeftHanded : Rep SL(2,) := Rep.of {
toFun := fun M => {
toFun := fun (ψ : AltLeftHandedModule) =>
AltLeftHandedModule.toFin2Equiv.symm ((M.1⁻¹)ᵀ *ᵥ ψ.toFin2),
map_add' := by
intro ψ ψ'
simp [mulVec_add]
map_smul' := by
intro r ψ
simp [mulVec_smul]}
map_one' := by
ext i
simp
map_mul' := fun M N => by
ext1 x
simp only [SpecialLinearGroup.coe_mul, LinearMap.coe_mk, AddHom.coe_mk, LinearMap.mul_apply,
LinearEquiv.apply_symm_apply, mulVec_mulVec, EmbeddingLike.apply_eq_iff_eq]
refine (congrFun (congrArg _ ?_) _)
rw [Matrix.mul_inv_rev]
exact transpose_mul _ _}
/-- The standard basis on alt-left-handed Weyl fermions. -/
def altLeftBasis : Basis (Fin 2) altLeftHanded := Basis.ofEquivFun
(Equiv.linearEquiv AltLeftHandedModule.toFin2Fun)
@[simp]
lemma altLeftBasis_ρ_apply (M : SL(2,)) (i j : Fin 2) :
(LinearMap.toMatrix altLeftBasis altLeftBasis) (altLeftHanded.ρ M) i j = (M.1⁻¹)ᵀ i j := by
rw [LinearMap.toMatrix_apply]
simp only [altLeftBasis, Basis.coe_ofEquivFun, Basis.ofEquivFun_repr_apply, transpose_apply]
change ((M.1⁻¹)ᵀ *ᵥ (Pi.single j 1)) i = _
simp only [mulVec_single, transpose_apply, mul_one]
2024-10-03 07:15:48 +00:00
/-- The vector space ^2 carrying the conjugate representation of SL(2,C).
2024-10-16 10:39:11 +00:00
In index notation corresponds to a Weyl fermion with indices ψ^{dot a}. -/
2024-10-03 07:15:48 +00:00
def rightHanded : Rep SL(2,) := Rep.of {
toFun := fun M => {
toFun := fun (ψ : RightHandedModule) =>
RightHandedModule.toFin2Equiv.symm (M.1.map star *ᵥ ψ.toFin2),
map_add' := by
intro ψ ψ'
simp [mulVec_add]
map_smul' := by
intro r ψ
simp [mulVec_smul]}
map_one' := by
ext i
simp
map_mul' := fun M N => by
ext1 x
simp only [SpecialLinearGroup.coe_mul, RCLike.star_def, Matrix.map_mul, LinearMap.coe_mk,
AddHom.coe_mk, LinearMap.mul_apply, LinearEquiv.apply_symm_apply, mulVec_mulVec]}
/-- The standard basis on right-handed Weyl fermions. -/
def rightBasis : Basis (Fin 2) rightHanded := Basis.ofEquivFun
(Equiv.linearEquiv RightHandedModule.toFin2Fun)
@[simp]
lemma rightBasis_ρ_apply (M : SL(2,)) (i j : Fin 2) :
(LinearMap.toMatrix rightBasis rightBasis) (rightHanded.ρ M) i j = (M.1.map star) i j := by
rw [LinearMap.toMatrix_apply]
simp only [rightBasis, Basis.coe_ofEquivFun, Basis.ofEquivFun_repr_apply, transpose_apply]
change (M.1.map star *ᵥ (Pi.single j 1)) i = _
simp only [mulVec_single, transpose_apply, mul_one]
2024-10-03 07:15:48 +00:00
/-- The vector space ^2 carrying the representation of SL(2,C) given by
M → (M⁻¹)^†.
2024-10-16 10:39:11 +00:00
In index notation this corresponds to a Weyl fermion with index `ψ_{dot a}`. -/
2024-10-03 07:15:48 +00:00
def altRightHanded : Rep SL(2,) := Rep.of {
toFun := fun M => {
toFun := fun (ψ : AltRightHandedModule) =>
AltRightHandedModule.toFin2Equiv.symm ((M.1⁻¹).conjTranspose *ᵥ ψ.toFin2),
map_add' := by
intro ψ ψ'
simp [mulVec_add]
map_smul' := by
intro r ψ
simp [mulVec_smul]}
map_one' := by
ext i
simp
map_mul' := fun M N => by
ext1 x
simp only [SpecialLinearGroup.coe_mul, LinearMap.coe_mk, AddHom.coe_mk, LinearMap.mul_apply,
LinearEquiv.apply_symm_apply, mulVec_mulVec, EmbeddingLike.apply_eq_iff_eq]
refine (congrFun (congrArg _ ?_) _)
rw [Matrix.mul_inv_rev]
exact conjTranspose_mul _ _}
2024-09-15 19:01:34 -04:00
/-- The standard basis on alt-right-handed Weyl fermions. -/
def altRightBasis : Basis (Fin 2) altRightHanded := Basis.ofEquivFun
(Equiv.linearEquiv AltRightHandedModule.toFin2Fun)
@[simp]
lemma altRightBasis_ρ_apply (M : SL(2,)) (i j : Fin 2) :
(LinearMap.toMatrix altRightBasis altRightBasis) (altRightHanded.ρ M) i j =
((M.1⁻¹).conjTranspose) i j := by
rw [LinearMap.toMatrix_apply]
simp only [altRightBasis, Basis.coe_ofEquivFun, Basis.ofEquivFun_repr_apply, transpose_apply]
change ((M.1⁻¹).conjTranspose *ᵥ (Pi.single j 1)) i = _
simp only [mulVec_single, transpose_apply, mul_one]
2024-09-15 19:01:34 -04:00
/-!
## Equivalences between Weyl fermion vector spaces.
-/
2024-09-16 07:40:15 -04:00
2024-10-03 07:15:48 +00:00
/-- The morphism between the representation `leftHanded` and the representation
`altLeftHanded` defined by multiplying an element of
`leftHanded` by the matrix `εᵃ⁰ᵃ¹ = !![0, 1; -1, 0]]`. -/
def leftHandedToAlt : leftHanded ⟶ altLeftHanded where
hom := {
toFun := fun ψ => AltLeftHandedModule.toFin2Equiv.symm (!![0, 1; -1, 0] *ᵥ ψ.toFin2),
map_add' := by
intro ψ ψ'
simp only [mulVec_add, LinearEquiv.map_add]
map_smul' := by
intro a ψ
simp only [mulVec_smul, LinearEquiv.map_smul]
rfl}
comm := by
intro M
refine LinearMap.ext (fun ψ => ?_)
change AltLeftHandedModule.toFin2Equiv.symm (!![0, 1; -1, 0] *ᵥ M.1 *ᵥ ψ.val) =
AltLeftHandedModule.toFin2Equiv.symm ((M.1⁻¹)ᵀ *ᵥ !![0, 1; -1, 0] *ᵥ ψ.val)
apply congrArg
rw [mulVec_mulVec, mulVec_mulVec, SpaceTime.SL2C.inverse_coe, eta_fin_two M.1]
refine congrFun (congrArg _ ?_) _
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
lemma leftHandedToAlt_hom_apply (ψ : leftHanded) :
leftHandedToAlt.hom ψ =
AltLeftHandedModule.toFin2Equiv.symm (!![0, 1; -1, 0] *ᵥ ψ.toFin2) := rfl
/-- The morphism from `altLeftHanded` to
`leftHanded` defined by multiplying an element of
altLeftHandedWeyl by the matrix `εₐ₁ₐ₂ = !![0, -1; 1, 0]`. -/
2024-10-03 07:32:46 +00:00
def leftHandedAltTo : altLeftHanded ⟶ leftHanded where
2024-10-03 07:15:48 +00:00
hom := {
toFun := fun ψ =>
LeftHandedModule.toFin2Equiv.symm (!![0, -1; 1, 0] *ᵥ ψ.toFin2),
map_add' := by
intro ψ ψ'
simp only [map_add]
rw [mulVec_add, LinearEquiv.map_add]
map_smul' := by
intro a ψ
simp only [LinearEquiv.map_smul]
rw [mulVec_smul, LinearEquiv.map_smul]
rfl}
comm := by
intro M
refine LinearMap.ext (fun ψ => ?_)
change LeftHandedModule.toFin2Equiv.symm (!![0, -1; 1, 0] *ᵥ (M.1⁻¹)ᵀ *ᵥ ψ.val) =
LeftHandedModule.toFin2Equiv.symm (M.1 *ᵥ !![0, -1; 1, 0] *ᵥ ψ.val)
rw [EquivLike.apply_eq_iff_eq, mulVec_mulVec, mulVec_mulVec, SpaceTime.SL2C.inverse_coe,
eta_fin_two M.1]
refine congrFun (congrArg _ ?_) _
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
lemma leftHandedAltTo_hom_apply (ψ : altLeftHanded) :
leftHandedAltTo.hom ψ =
LeftHandedModule.toFin2Equiv.symm (!![0, -1; 1, 0] *ᵥ ψ.toFin2) := rfl
/-- The equivalence between the representation `leftHanded` and the representation
`altLeftHanded` defined by multiplying an element of
`leftHanded` by the matrix `εᵃ⁰ᵃ¹ = !![0, 1; -1, 0]]`. -/
def leftHandedAltEquiv : leftHanded ≅ altLeftHanded where
hom := leftHandedToAlt
inv := leftHandedAltTo
hom_inv_id := by
ext ψ
simp only [Action.comp_hom, ModuleCat.coe_comp, Function.comp_apply, Action.id_hom,
ModuleCat.id_apply]
rw [leftHandedAltTo_hom_apply, leftHandedToAlt_hom_apply]
rw [AltLeftHandedModule.toFin2, LinearEquiv.apply_symm_apply, mulVec_mulVec]
rw [show (!![0, -1; (1 : ), 0] * !![0, 1; -1, 0]) = 1 by simpa using Eq.symm one_fin_two]
rw [one_mulVec]
rfl
inv_hom_id := by
ext ψ
simp only [Action.comp_hom, ModuleCat.coe_comp, Function.comp_apply, Action.id_hom,
ModuleCat.id_apply]
rw [leftHandedAltTo_hom_apply, leftHandedToAlt_hom_apply, LeftHandedModule.toFin2,
LinearEquiv.apply_symm_apply, mulVec_mulVec]
rw [show (!![0, (1 : ); -1, 0] * !![0, -1; 1, 0]) = 1 by simpa using Eq.symm one_fin_two]
rw [one_mulVec]
rfl
lemma leftHandedAltEquiv_hom_hom_apply (ψ : leftHanded) :
leftHandedAltEquiv.hom.hom ψ =
AltLeftHandedModule.toFin2Equiv.symm (!![0, 1; -1, 0] *ᵥ ψ.toFin2) := rfl
lemma leftHandedAltEquiv_inv_hom_apply (ψ : altLeftHanded) :
leftHandedAltEquiv.inv.hom ψ =
LeftHandedModule.toFin2Equiv.symm (!![0, -1; 1, 0] *ᵥ ψ.toFin2) := rfl
2024-09-15 19:01:34 -04:00
2024-09-23 08:08:40 +00:00
informal_definition rightHandedWeylAltEquiv where
math :≈ "The linear equiv between rightHandedWeyl and altRightHandedWeyl given
by multiplying an element of rightHandedWeyl by the matrix `εᵃ⁰ᵃ¹ = !![0, 1; -1, 0]]`"
2024-10-03 07:15:48 +00:00
deps :≈ [``rightHanded, ``altRightHanded]
2024-09-15 19:01:34 -04:00
2024-09-23 08:08:40 +00:00
informal_lemma rightHandedWeylAltEquiv_equivariant where
math :≈ "The linear equiv rightHandedWeylAltEquiv is equivariant with respect to the
action of SL(2,C) on rightHandedWeyl and altRightHandedWeyl."
deps :≈ [``rightHandedWeylAltEquiv]
2024-10-03 07:15:48 +00:00
end
2024-09-23 08:08:40 +00:00
end Fermion