Imports
/- Copyright (c) 2026 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 Mathlib.Analysis.Complex.Basic public import Physlib.Meta.TODO.Basic public import Physlib.Relativity.SL2C.Basic public import Physlib.Meta.Informal.Basic public import Physlib.Meta.TODO.Basic

Left handed Weyl fermions

In this file we define Left handed Weyl fermions. These sit in the fundamental representation of SL(2,ℂ), and we consider them to have up indices ψ^α with α = 1,2.

@[expose] public section

The module in which left handed fermions live. This is equivalent to Fin 2 → ℂ.

The underlying value in Fin 2 → ℂ.

structure LeftHandedWeyl where val : Fin 2

Underlying module structure

The equivalence between LeftHandedWeyl and Fin 2 → ℂ.

def toFin2ℂFun : LeftHandedWeyl (Fin 2 ) where toFun v := v.val invFun f := f left_inv _ := rfl right_inv _ := rfl

The instance of AddCommMonoid on LeftHandedWeyl defined via its equivalence with Fin 2 → ℂ.

instance : AddCommMonoid LeftHandedWeyl := Equiv.addCommMonoid toFin2ℂFun

The instance of AddCommGroup on LeftHandedWeyl defined via its equivalence with Fin 2 → ℂ.

instance : AddCommGroup LeftHandedWeyl := Equiv.addCommGroup toFin2ℂFun

The instance of Module on LeftHandedWeyl defined via its equivalence with Fin 2 → ℂ.

instance : Module LeftHandedWeyl := Equiv.module toFin2ℂFun

The linear equivalence between LeftHandedWeyl and (Fin 2 → ℂ).

@[simps!] def toFin2ℂEquiv : LeftHandedWeyl ≃ₗ[] (Fin 2 ) where toFun := toFin2ℂFun map_add' := fun _ _ => rfl map_smul' := fun _ _ => rfl invFun := toFin2ℂFun.symm left_inv := fun _ => rfl right_inv := fun _ => rfl

The underlying element of Fin 2 → ℂ of a element in LeftHandedWeyl defined through the linear equivalence toFin2ℂEquiv.

abbrev toFin2ℂ (ψ : LeftHandedWeyl) := toFin2ℂEquiv ψ
lemma toFin2ℂ_eq_val (ψ : LeftHandedWeyl) : ψ.toFin2ℂ = ψ.val := rfl

Basis

The standard basis on left-handed Weyl fermions.

def basis : Basis (Fin 2) LeftHandedWeyl := Basis.ofEquivFun (Equiv.linearEquiv LeftHandedWeyl.toFin2ℂFun)
lemma basis_apply (i j : Fin 2) : (basis i).1 j = if j = i then 1 else 0 := i:Fin 2j:Fin 2(basis i).val j = if j = i then 1 else 0 i:Fin 2j:Fin 2(toFin2ℂFun.symm (Pi.single i 1)).val j = if j = i then 1 else 0 i:Fin 2j:Fin 2Pi.single i 1 j = if j = i then 1 else 0 All goals completed! 🐙lemma eq_sum_basis (ψ : LeftHandedWeyl) : ψ = i, ψ.1 i basis i := ψ:LeftHandedWeylψ = i, ψ.val i basis i conv_lhs => ψ:LeftHandedWeyl| i, (basis.repr ψ) i basis i All goals completed! 🐙lemma basis_val (i : Fin 2) : (basis i).val = Pi.single i 1 := i:Fin 2(basis i).val = Pi.single i 1 i:Fin 2j:Fin 2(basis i).val j = Pi.single i 1 j All goals completed! 🐙

Representation

The vector space ℂ^2 carrying the fundamental representation of SL(2,C). In index notation corresponds to a Weyl fermion with indices ψ^a.

def rep : Representation SL(2,) LeftHandedWeyl where toFun := fun M => { toFun := fun (ψ : LeftHandedWeyl) => LeftHandedWeyl.toFin2ℂEquiv.symm (M.1 *ᵥ ψ.toFin2ℂ), map_add' := M:SL(2, ) (x y : LeftHandedWeyl), toFin2ℂEquiv.symm (M *ᵥ (x + y).toFin2ℂ) = toFin2ℂEquiv.symm (M *ᵥ x.toFin2ℂ) + toFin2ℂEquiv.symm (M *ᵥ y.toFin2ℂ) M:SL(2, )ψ:LeftHandedWeylψ':LeftHandedWeyltoFin2ℂEquiv.symm (M *ᵥ (ψ + ψ').toFin2ℂ) = toFin2ℂEquiv.symm (M *ᵥ ψ.toFin2ℂ) + toFin2ℂEquiv.symm (M *ᵥ ψ'.toFin2ℂ) All goals completed! 🐙 map_smul' := M:SL(2, ) (m : ) (x : LeftHandedWeyl), toFin2ℂEquiv.symm (M *ᵥ (m x).toFin2ℂ) = (RingHom.id ) m toFin2ℂEquiv.symm (M *ᵥ x.toFin2ℂ) M:SL(2, )r:ψ:LeftHandedWeyltoFin2ℂEquiv.symm (M *ᵥ (r ψ).toFin2ℂ) = (RingHom.id ) r toFin2ℂEquiv.symm (M *ᵥ ψ.toFin2ℂ) All goals completed! 🐙} map_one' := { toFun := fun ψ => toFin2ℂEquiv.symm (1 *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } = 1 i:LeftHandedWeyl{ toFun := fun ψ => toFin2ℂEquiv.symm (1 *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } i = 1 i All goals completed! 🐙 map_mul' := fun M N => M:SL(2, )N:SL(2, ){ toFun := fun ψ => toFin2ℂEquiv.symm ((M * N) *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } = { toFun := fun ψ => toFin2ℂEquiv.symm (M *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } * { toFun := fun ψ => toFin2ℂEquiv.symm (N *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } M:SL(2, )N:SL(2, ){ toFun := fun ψ => toFin2ℂEquiv.symm ((M * N) *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } = { toFun := fun ψ => toFin2ℂEquiv.symm (M *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } * { toFun := fun ψ => toFin2ℂEquiv.symm (N *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } M:SL(2, )N:SL(2, )x:LeftHandedWeyl{ toFun := fun ψ => toFin2ℂEquiv.symm ((M * N) *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } x = ({ toFun := fun ψ => toFin2ℂEquiv.symm (M *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := } * { toFun := fun ψ => toFin2ℂEquiv.symm (N *ᵥ ψ.toFin2ℂ), map_add' := , map_smul' := }) x All goals completed! 🐙
lemma rep_apply (M : SL(2,)) (ψ : LeftHandedWeyl) : rep M ψ = M.1 *ᵥ ψ.1 := rflM:SL(2, )ψ:LeftHandedWeyl i, ((rep M) ψ).val i basis i = i, (∑ j, M i j * ψ.val j) basis i All goals completed! 🐙M:SL(2, )i:Fin 2 i_1, (∑ j, M i_1 j * (basis i).val j) basis i_1 = j, M j i basis j M:SL(2, )i:Fin 2(fun i_1 => (∑ j, M i_1 j * (basis i).val j) basis i_1) = fun j => M j i basis j M:SL(2, )i:Fin 2j:Fin 2(∑ j_1, M j j_1 * (basis i).val j_1) basis j = M j i basis j All goals completed! 🐙M:SL(2, )i:Fin 2j:Fin 2(basis.repr ((rep M) (basis j))) i = M i j M:SL(2, )i:Fin 2j:Fin 2(Equiv.linearEquiv toFin2ℂFun) ((rep M) ((Equiv.linearEquiv toFin2ℂFun).symm (Pi.single j 1))) i = M i j M:SL(2, )i:Fin 2j:Fin 2(M *ᵥ Pi.single j 1) i = M i j All goals completed! 🐙lemma rep_apply_basis_repr (M : SL(2,)) (i j : Fin 2) : basis.repr (rep M (basis i)) j = M.1 j i := M:SL(2, )i:Fin 2j:Fin 2(basis.repr ((rep M) (basis i))) j = M j i M:SL(2, )i:Fin 2(basis.repr ((rep M) (basis i))) ((fun i => i) 0, ) = M ((fun i => i) 0, ) iM:SL(2, )i:Fin 2(basis.repr ((rep M) (basis i))) ((fun i => i) 1, ) = M ((fun i => i) 1, ) i M:SL(2, )i:Fin 2(basis.repr ((rep M) (basis i))) ((fun i => i) 0, ) = M ((fun i => i) 0, ) iM:SL(2, )i:Fin 2(basis.repr ((rep M) (basis i))) ((fun i => i) 1, ) = M ((fun i => i) 1, ) i All goals completed! 🐙