Imports
/- 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 -/ module public import Physlib.Relativity.Fermions.Weyl.LeftHanded public import Physlib.Relativity.Fermions.Weyl.RightHanded public import Physlib.Relativity.Fermions.Weyl.DualLeftHanded public import Physlib.Relativity.Fermions.Weyl.DualRightHanded

Dirac fermions

In this file we define Dirac fermions. This corresponds to a combination of two Weyl fermions (ψ^α, χ_{dot α}) That is a LeftHandedWeyl and a DualRightHandedWeyl.

References

    arXiv:0812.1594 page 197.

@[expose] public section

A Dirac fermion, consisting of a left handed Weyl fermion and a dual right handed Weyl fermion.

The left handed component of the Dirac fermion.

The right handed component of the Dirac fermion.

structure Dirac where left : LeftHandedWeyl dualRight : DualRightHandedWeyl

The underlying module structure

We inherit the module structure on dirac fermions from the module structure on left handed and dual right handed Weyl fermions.

The decomposition of a Dirac fermion into its left handed and dual right handed components.

def decomposeEquiv : Dirac LeftHandedWeyl × DualRightHandedWeyl where toFun d := (d.left, d.dualRight) invFun p := p.1, p.2 left_inv _ := rfl right_inv _ := rfl
instance : AddCommGroup Dirac := Equiv.addCommGroup decomposeEquivinstance : Module Dirac := Equiv.module decomposeEquiv@[simp] lemma left_add (d₁ d₂ : Dirac) : (d₁ + d₂).left = d₁.left + d₂.left := rfl@[simp] lemma dualRight_add (d₁ d₂ : Dirac) : (d₁ + d₂).dualRight = d₁.dualRight + d₂.dualRight := rfl@[simp] lemma left_smul (c : ) (d : Dirac) : (c d).left = c d.left := rfl@[simp] lemma dualRight_smul (c : ) (d : Dirac) : (c d).dualRight = c d.dualRight := rfl

The linear equivalence between Dirac and LeftHandedWeyl × DualRightHandedWeyl.

def decomposeLinEquiv : Dirac ≃ₗ[] LeftHandedWeyl × DualRightHandedWeyl where toEquiv := decomposeEquiv map_add' := (x y : Dirac), decomposeEquiv.toFun (x + y) = decomposeEquiv.toFun x + decomposeEquiv.toFun y x✝:Diracy✝:DiracdecomposeEquiv.toFun (x✝ + y✝) = decomposeEquiv.toFun x✝ + decomposeEquiv.toFun y✝; All goals completed! 🐙 map_smul' := (m : ) (x : Dirac), decomposeEquiv.toFun (m x) = (RingHom.id ) m decomposeEquiv.toFun x m✝:x✝:DiracdecomposeEquiv.toFun (m✝ x✝) = (RingHom.id ) m✝ decomposeEquiv.toFun x✝; All goals completed! 🐙

The chiral basis

The chiral basis of the Dirac fermions.

def chiralBasis : Basis (Fin 4) Dirac := ((LeftHandedWeyl.basis.prod DualRightHandedWeyl.basis).reindex finSumFinEquiv).map decomposeLinEquiv.symm
lemma chiralBasis_cast_add (i : Fin 2) : chiralBasis (Fin.castAdd 2 i) = LeftHandedWeyl.basis i, 0 := i:Fin 2chiralBasis (Fin.castAdd 2 i) = { left := LeftHandedWeyl.basis i, dualRight := 0 } chiralBasis (Fin.castAdd 2 ((fun i => i) 0, )) = { left := LeftHandedWeyl.basis ((fun i => i) 0, ), dualRight := 0 }chiralBasis (Fin.castAdd 2 ((fun i => i) 1, )) = { left := LeftHandedWeyl.basis ((fun i => i) 1, ), dualRight := 0 } all_goals decomposeLinEquiv.symm (((fun x => (x, 0)) LeftHandedWeyl.basis ⊕ᵥ Prod.mk 0 DualRightHandedWeyl.basis) (finSumFinEquiv.symm (Fin.castAdd 2 1, ))) = { left := LeftHandedWeyl.basis 1, , dualRight := 0 } All goals completed! 🐙lemma chiralBasis_nat_add (i : Fin 2) : chiralBasis (Fin.natAdd 2 i) = 0, DualRightHandedWeyl.basis i := i:Fin 2chiralBasis (Fin.natAdd 2 i) = { left := 0, dualRight := DualRightHandedWeyl.basis i } chiralBasis (Fin.natAdd 2 ((fun i => i) 0, )) = { left := 0, dualRight := DualRightHandedWeyl.basis ((fun i => i) 0, ) }chiralBasis (Fin.natAdd 2 ((fun i => i) 1, )) = { left := 0, dualRight := DualRightHandedWeyl.basis ((fun i => i) 1, ) } all_goals decomposeLinEquiv.symm (((fun x => (x, 0)) LeftHandedWeyl.basis ⊕ᵥ Prod.mk 0 DualRightHandedWeyl.basis) (finSumFinEquiv.symm (Fin.natAdd 2 1, ))) = { left := 0, dualRight := DualRightHandedWeyl.basis 1, } All goals completed! 🐙

The representation of the Lorentz group

The representation of SL(2, ℂ) on Dirac fermions.

def rep : Representation SL(2,) Dirac where toFun g := decomposeLinEquiv.symm ∘ₗ (((LeftHandedWeyl.rep).prod (DualRightHandedWeyl.rep)) g) ∘ₗ decomposeLinEquiv map_one' := decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) 1 ∘ₗ decomposeLinEquiv = 1 i:Dirac(decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) 1 ∘ₗ decomposeLinEquiv) i = 1 i All goals completed! 🐙 map_mul' := fun M N => M:SL(2, )N:SL(2, )decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) (M * N) ∘ₗ decomposeLinEquiv = decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) M ∘ₗ decomposeLinEquiv * decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) N ∘ₗ decomposeLinEquiv M:SL(2, )N:SL(2, )x:Dirac(decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) (M * N) ∘ₗ decomposeLinEquiv) x = (decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) M ∘ₗ decomposeLinEquiv * decomposeLinEquiv.symm ∘ₗ (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) N ∘ₗ decomposeLinEquiv) x All goals completed! 🐙
lemma rep_apply_mk (g : SL(2,)) (ψ : LeftHandedWeyl) (χ : DualRightHandedWeyl) : rep g ψ, χ = LeftHandedWeyl.rep g ψ, DualRightHandedWeyl.rep g χ := rfl

The equivalence between the representation on Dirac and the representation on LeftHandedWeyl × DualRightHandedWeyl.

def decomposeRepEquiv : rep.Equiv ((LeftHandedWeyl.rep).prod (DualRightHandedWeyl.rep)) where toLinearEquiv := decomposeLinEquiv isIntertwining' g := g:SL(2, )decomposeLinEquiv ∘ₗ rep g = (LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) g ∘ₗ decomposeLinEquiv g:SL(2, )x:Dirac(decomposeLinEquiv ∘ₗ rep g) x = ((LeftHandedWeyl.rep.prod DualRightHandedWeyl.rep) g ∘ₗ decomposeLinEquiv) x g:SL(2, )x:DiracdecomposeLinEquiv ((rep g) x) = ((LeftHandedWeyl.rep g) (decomposeLinEquiv x).1, (DualRightHandedWeyl.rep g) (decomposeLinEquiv x).2) All goals completed! 🐙