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.Two public import Physlib.Relativity.Fermions.Weyl.Contraction

Units of Weyl fermions

We define the units for Weyl fermions, often denoted δ in the literature.

@[expose] public section

The left-dual-left unit δᵃₐ as an element of (leftHanded ⊗ dualLeftHanded).V.

def leftDualLeftUnitVal : (LeftHandedWeyl ⊗[] DualLeftHandedWeyl) := leftDualLeftToMatrix.symm 1

Expansion of leftDualLeftUnitVal into the basis.

lemma leftDualLeftUnitVal_expand_tmul : leftDualLeftUnitVal = LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1 := leftDualLeftUnitVal = LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1 leftDualLeftToMatrix.symm 1 = LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1 erw [ i, j, 1 i j LeftHandedWeyl.basis i ⊗ₜ[] DualLeftHandedWeyl.basis j = LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1 i, j, 1 i j LeftHandedWeyl.basis i ⊗ₜ[] DualLeftHandedWeyl.basis j = LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1 All goals completed! 🐙

The left-dual-left unit δᵃₐ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ leftHanded ⊗ dualLeftHanded , manifesting the invariance under the SL(2,ℂ) action.

M:SL(2, )x:leftDualLeftToMatrix.symm 1 = leftDualLeftToMatrix.symm (M * 1 * (↑M)⁻¹) M:SL(2, )x:1 = M * 1 * (↑M)⁻¹ All goals completed! 🐙
lemma leftDualLeftUnit_apply_one : leftDualLeftUnit (1 : ) = leftDualLeftUnitVal := leftDualLeftUnit 1 = leftDualLeftUnitVal 1 leftDualLeftUnitVal = leftDualLeftUnitVal All goals completed! 🐙

The dual-left-left unit δₐᵃ as an element of (dualLeftHanded ⊗ leftHanded).V.

def dualLeftLeftUnitVal : (DualLeftHandedWeyl ⊗[] LeftHandedWeyl) := dualLeftLeftToMatrix.symm 1

Expansion of dualLeftLeftUnitVal into the basis.

i, j, 1 i j DualLeftHandedWeyl.basis i ⊗ₜ[] LeftHandedWeyl.basis j = DualLeftHandedWeyl.basis 0 ⊗ₜ[] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[] LeftHandedWeyl.basis 1 All goals completed! 🐙

The dual-left-left unit δₐᵃ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ dualLeftHanded ⊗ leftHanded , manifesting the invariance under the SL(2,ℂ) action.

M:SL(2, )x:dualLeftLeftToMatrix.symm 1 = dualLeftLeftToMatrix.symm ((↑M)⁻¹ * 1 * (↑M)) M:SL(2, )x:1 = (↑M)⁻¹ * 1 * (↑M) All goals completed! 🐙

Applying the morphism dualLeftLeftUnit to 1 returns dualLeftLeftUnitVal.

lemma dualLeftLeftUnit_apply_one : dualLeftLeftUnit (1 : ) = dualLeftLeftUnitVal := dualLeftLeftUnit 1 = dualLeftLeftUnitVal 1 dualLeftLeftUnitVal = dualLeftLeftUnitVal All goals completed! 🐙

The right-dual-right unit δ^{dot a}_{dot a} as an element of (rightHanded ⊗ dualRightHanded).V.

def rightDualRightUnitVal : RightHandedWeyl ⊗[] DualRightHandedWeyl := rightDualRightToMatrix.symm 1

Expansion of rightDualRightUnitVal into the basis.

i, j, 1 i j RightHandedWeyl.basis i ⊗ₜ[] DualRightHandedWeyl.basis j = RightHandedWeyl.basis 0 ⊗ₜ[] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[] DualRightHandedWeyl.basis 1 All goals completed! 🐙

The right-dual-right unit δ^{dot a}_{dot a} as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ rightHanded ⊗ dualRightHanded, manifesting the invariance under the SL(2,ℂ) action.

M:SL(2, )x:(↑M)⁻¹ * (↑M) = 1 All goals completed! 🐙
lemma rightDualRightUnit_apply_one : rightDualRightUnit (1 : ) = rightDualRightUnitVal := rightDualRightUnit 1 = rightDualRightUnitVal 1 rightDualRightUnitVal = rightDualRightUnitVal All goals completed! 🐙

The dual-right-right unit δ_{dot a}^{dot a} as an element of (rightHanded ⊗ dualRightHanded).V.

def dualRightRightUnitVal : (DualRightHandedWeyl ⊗[] RightHandedWeyl) := dualRightRightToMatrix.symm 1

Expansion of dualRightRightUnitVal into the basis.

i, j, 1 i j DualRightHandedWeyl.basis i ⊗ₜ[] RightHandedWeyl.basis j = DualRightHandedWeyl.basis 0 ⊗ₜ[] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[] RightHandedWeyl.basis 1 All goals completed! 🐙

The dual-right-right unit δ_{dot a}^{dot a} as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ dualRightHanded ⊗ rightHanded, manifesting the invariance under the SL(2,ℂ) action.

M:SL(2, )x:(↑M)⁻¹ * (↑M) = 1 All goals completed! 🐙
lemma dualRightRightUnit_apply_one : dualRightRightUnit (1 : ) = dualRightRightUnitVal := dualRightRightUnit 1 = dualRightRightUnitVal 1 dualRightRightUnitVal = dualRightRightUnitVal All goals completed! 🐙

Contraction of the units

Contraction on the right with dualLeftLeftUnit does nothing.

lemma contr_dualLeftLeftUnit (x : LeftHandedWeyl) : (TensorProduct.lid _ <| leftDualContraction.toLinearMap.rTensor _ <| (TensorProduct.assoc _ _ _).symm <| x ⊗ₜ[] (dualLeftLeftUnit (1 : ))) = x := x:LeftHandedWeyl(TensorProduct.lid LeftHandedWeyl) ((LinearMap.rTensor LeftHandedWeyl leftDualContraction.toLinearMap) ((TensorProduct.assoc LeftHandedWeyl DualLeftHandedWeyl LeftHandedWeyl).symm (x ⊗ₜ[] dualLeftLeftUnit 1))) = x x:LeftHandedWeylc:Fin 2 hc: i, c i LeftHandedWeyl.basis i = x(TensorProduct.lid LeftHandedWeyl) ((LinearMap.rTensor LeftHandedWeyl leftDualContraction.toLinearMap) ((TensorProduct.assoc LeftHandedWeyl DualLeftHandedWeyl LeftHandedWeyl).symm (x ⊗ₜ[] dualLeftLeftUnit 1))) = x c:Fin 2 (TensorProduct.lid LeftHandedWeyl) ((LinearMap.rTensor LeftHandedWeyl leftDualContraction.toLinearMap) ((TensorProduct.assoc LeftHandedWeyl DualLeftHandedWeyl LeftHandedWeyl).symm ((∑ i, c i LeftHandedWeyl.basis i) ⊗ₜ[] dualLeftLeftUnit 1))) = i, c i LeftHandedWeyl.basis i All goals completed! 🐙

Contraction on the right with leftDualLeftUnit does nothing.

lemma contr_leftDualLeftUnit (x : DualLeftHandedWeyl) : (TensorProduct.lid _ <| dualLeftContraction.toLinearMap.rTensor _ <| (TensorProduct.assoc _ _ _).symm <| x ⊗ₜ[] (leftDualLeftUnit (1 : ))) = x := x:DualLeftHandedWeyl(TensorProduct.lid DualLeftHandedWeyl) ((LinearMap.rTensor DualLeftHandedWeyl dualLeftContraction.toLinearMap) ((TensorProduct.assoc DualLeftHandedWeyl LeftHandedWeyl DualLeftHandedWeyl).symm (x ⊗ₜ[] leftDualLeftUnit 1))) = x x:DualLeftHandedWeylc:Fin 2 hc: i, c i DualLeftHandedWeyl.basis i = x(TensorProduct.lid DualLeftHandedWeyl) ((LinearMap.rTensor DualLeftHandedWeyl dualLeftContraction.toLinearMap) ((TensorProduct.assoc DualLeftHandedWeyl LeftHandedWeyl DualLeftHandedWeyl).symm (x ⊗ₜ[] leftDualLeftUnit 1))) = x c:Fin 2 (TensorProduct.lid DualLeftHandedWeyl) ((LinearMap.rTensor DualLeftHandedWeyl dualLeftContraction.toLinearMap) ((TensorProduct.assoc DualLeftHandedWeyl LeftHandedWeyl DualLeftHandedWeyl).symm ((∑ i, c i DualLeftHandedWeyl.basis i) ⊗ₜ[] leftDualLeftUnit 1))) = i, c i DualLeftHandedWeyl.basis i All goals completed! 🐙

Contraction on the right with dualRightRightUnit does nothing.

lemma contr_dualRightRightUnit (x : RightHandedWeyl) : (TensorProduct.lid _ <| rightDualContraction.toLinearMap.rTensor _ <| (TensorProduct.assoc _ _ _).symm <| x ⊗ₜ[] (dualRightRightUnit (1 : ))) = x := x:RightHandedWeyl(TensorProduct.lid RightHandedWeyl) ((LinearMap.rTensor RightHandedWeyl rightDualContraction.toLinearMap) ((TensorProduct.assoc RightHandedWeyl DualRightHandedWeyl RightHandedWeyl).symm (x ⊗ₜ[] dualRightRightUnit 1))) = x x:RightHandedWeylc:Fin 2 hc: i, c i RightHandedWeyl.basis i = x(TensorProduct.lid RightHandedWeyl) ((LinearMap.rTensor RightHandedWeyl rightDualContraction.toLinearMap) ((TensorProduct.assoc RightHandedWeyl DualRightHandedWeyl RightHandedWeyl).symm (x ⊗ₜ[] dualRightRightUnit 1))) = x c:Fin 2 (TensorProduct.lid RightHandedWeyl) ((LinearMap.rTensor RightHandedWeyl rightDualContraction.toLinearMap) ((TensorProduct.assoc RightHandedWeyl DualRightHandedWeyl RightHandedWeyl).symm ((∑ i, c i RightHandedWeyl.basis i) ⊗ₜ[] dualRightRightUnit 1))) = i, c i RightHandedWeyl.basis i All goals completed! 🐙

Contraction on the right with rightDualRightUnit does nothing.

lemma contr_rightDualRightUnit (x : DualRightHandedWeyl) : (TensorProduct.lid _ <| dualRightContraction.toLinearMap.rTensor _ <| (TensorProduct.assoc _ _ _).symm <| x ⊗ₜ[] (rightDualRightUnit (1 : ))) = x := x:DualRightHandedWeyl(TensorProduct.lid DualRightHandedWeyl) ((LinearMap.rTensor DualRightHandedWeyl dualRightContraction.toLinearMap) ((TensorProduct.assoc DualRightHandedWeyl RightHandedWeyl DualRightHandedWeyl).symm (x ⊗ₜ[] rightDualRightUnit 1))) = x x:DualRightHandedWeylc:Fin 2 hc: i, c i DualRightHandedWeyl.basis i = x(TensorProduct.lid DualRightHandedWeyl) ((LinearMap.rTensor DualRightHandedWeyl dualRightContraction.toLinearMap) ((TensorProduct.assoc DualRightHandedWeyl RightHandedWeyl DualRightHandedWeyl).symm (x ⊗ₜ[] rightDualRightUnit 1))) = x c:Fin 2 (TensorProduct.lid DualRightHandedWeyl) ((LinearMap.rTensor DualRightHandedWeyl dualRightContraction.toLinearMap) ((TensorProduct.assoc DualRightHandedWeyl RightHandedWeyl DualRightHandedWeyl).symm ((∑ i, c i DualRightHandedWeyl.basis i) ⊗ₜ[] rightDualRightUnit 1))) = i, c i DualRightHandedWeyl.basis i All goals completed! 🐙

Symmetry properties of the units

DualLeftHandedWeyl.basis 0 ⊗ₜ[] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[] LeftHandedWeyl.basis 1 = (LinearMap.lTensor DualLeftHandedWeyl (LinearEquiv.refl LeftHandedWeyl)) ((TensorProduct.comm LeftHandedWeyl DualLeftHandedWeyl) (LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1)) All goals completed! 🐙LeftHandedWeyl.basis 0 ⊗ₜ[] DualLeftHandedWeyl.basis 0 + LeftHandedWeyl.basis 1 ⊗ₜ[] DualLeftHandedWeyl.basis 1 = (LinearMap.lTensor LeftHandedWeyl (LinearEquiv.refl DualLeftHandedWeyl)) ((TensorProduct.comm DualLeftHandedWeyl LeftHandedWeyl) (DualLeftHandedWeyl.basis 0 ⊗ₜ[] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[] LeftHandedWeyl.basis 1)) All goals completed! 🐙DualRightHandedWeyl.basis 0 ⊗ₜ[] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[] RightHandedWeyl.basis 1 = (LinearMap.lTensor DualRightHandedWeyl (LinearEquiv.refl RightHandedWeyl)) ((TensorProduct.comm RightHandedWeyl DualRightHandedWeyl) (RightHandedWeyl.basis 0 ⊗ₜ[] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[] DualRightHandedWeyl.basis 1)) All goals completed! 🐙RightHandedWeyl.basis 0 ⊗ₜ[] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[] DualRightHandedWeyl.basis 1 = (LinearMap.lTensor RightHandedWeyl (LinearEquiv.refl DualRightHandedWeyl)) ((TensorProduct.comm DualRightHandedWeyl RightHandedWeyl) (DualRightHandedWeyl.basis 0 ⊗ₜ[] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[] RightHandedWeyl.basis 1)) All goals completed! 🐙