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.DualRightHandedContraction of Weyl fermions
We define the contraction of Weyl fermions.
@[expose] public sectionContraction of Weyl fermions.
The bi-linear map corresponding to contraction of a left-handed Weyl fermion with a dual-left-handed Weyl fermion.
r:ℂψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ r • (LeftHandedWeyl.toFin2ℂEquiv ψ ⬝ᵥ φ.toFin2ℂ) =
((RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ
rfl All goals completed! 🐙The bi-linear map corresponding to contraction of a dual-left-handed Weyl fermion with a left-handed Weyl fermion.
def dualLeftBi : DualLeftHandedWeyl →ₗ[ℂ] LeftHandedWeyl →ₗ[ℂ] ℂ where
toFun ψ := {
toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ,
map_add' := by ψ:DualLeftHandedWeyl⊢ ∀ (x y : LeftHandedWeyl), ψ.toFin2ℂ ⬝ᵥ (x + y).toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ x.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ y.toFin2ℂ
intro φ φ' ψ:DualLeftHandedWeylφ:LeftHandedWeylφ':LeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (φ + φ').toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ
simp only [map_add] ψ:DualLeftHandedWeylφ:LeftHandedWeylφ':LeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (LeftHandedWeyl.toFin2ℂEquiv φ + LeftHandedWeyl.toFin2ℂEquiv φ') =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ
rw [dotProduct_add ψ:DualLeftHandedWeylφ:LeftHandedWeylφ':LeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ LeftHandedWeyl.toFin2ℂEquiv φ + ψ.toFin2ℂ ⬝ᵥ LeftHandedWeyl.toFin2ℂEquiv φ' =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ All goals completed! 🐙] All goals completed! 🐙
map_smul' := by ψ:DualLeftHandedWeyl⊢ ∀ (m : ℂ) (x : LeftHandedWeyl), ψ.toFin2ℂ ⬝ᵥ (m • x).toFin2ℂ = (RingHom.id ℂ) m • (ψ.toFin2ℂ ⬝ᵥ x.toFin2ℂ)
intro r φ ψ:DualLeftHandedWeylr:ℂφ:LeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (r • φ).toFin2ℂ = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
simp only [LinearEquiv.map_smul] ψ:DualLeftHandedWeylr:ℂφ:LeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ r • LeftHandedWeyl.toFin2ℂEquiv φ = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
rw [dotProduct_smul ψ:DualLeftHandedWeylr:ℂφ:LeftHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ LeftHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ) ψ:DualLeftHandedWeylr:ℂφ:LeftHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ LeftHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)] ψ:DualLeftHandedWeylr:ℂφ:LeftHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ LeftHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
rfl All goals completed! 🐙}
map_add' ψ ψ':= by ψ:DualLeftHandedWeylψ':DualLeftHandedWeyl⊢ { toFun := fun φ => (ψ + ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } =
{ toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } +
{ toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext (fun φ => ?_) ψ:DualLeftHandedWeylψ':DualLeftHandedWeylφ:LeftHandedWeyl⊢ { toFun := fun φ => (ψ + ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } φ =
({ toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } +
{ toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ })
φ
simp only [map_add, add_dotProduct, vec2_dotProduct, Fin.isValue, LinearMap.coe_mk,
AddHom.coe_mk, LinearMap.add_apply] All goals completed! 🐙
map_smul' ψ ψ' := by ψ:ℂψ':DualLeftHandedWeyl⊢ { toFun := fun φ => (ψ • ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } =
(RingHom.id ℂ) ψ • { toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext (fun φ => ?_) ψ:ℂψ':DualLeftHandedWeylφ:LeftHandedWeyl⊢ { toFun := fun φ => (ψ • ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } φ =
((RingHom.id ℂ) ψ • { toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ
simp only [_root_.map_smul, smul_dotProduct, vec2_dotProduct, Fin.isValue, smul_eq_mul,
LinearMap.coe_mk, AddHom.coe_mk, RingHom.id_apply, LinearMap.smul_apply] All goals completed! 🐙The bi-linear map corresponding to contraction of a right-handed Weyl fermion with a dual-right-handed Weyl fermion.
def rightDualBi : RightHandedWeyl →ₗ[ℂ] DualRightHandedWeyl →ₗ[ℂ] ℂ where
toFun ψ := {
toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ,
map_add' := by ψ:RightHandedWeyl⊢ ∀ (x y : DualRightHandedWeyl), ψ.toFin2ℂ ⬝ᵥ (x + y).toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ x.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ y.toFin2ℂ
intro φ φ' ψ:RightHandedWeylφ:DualRightHandedWeylφ':DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (φ + φ').toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ
simp only [map_add] ψ:RightHandedWeylφ:DualRightHandedWeylφ':DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (DualRightHandedWeyl.toFin2ℂEquiv φ + DualRightHandedWeyl.toFin2ℂEquiv φ') =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ
rw [dotProduct_add ψ:RightHandedWeylφ:DualRightHandedWeylφ':DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ DualRightHandedWeyl.toFin2ℂEquiv φ + ψ.toFin2ℂ ⬝ᵥ DualRightHandedWeyl.toFin2ℂEquiv φ' =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ All goals completed! 🐙] All goals completed! 🐙
map_smul' := by ψ:RightHandedWeyl⊢ ∀ (m : ℂ) (x : DualRightHandedWeyl), ψ.toFin2ℂ ⬝ᵥ (m • x).toFin2ℂ = (RingHom.id ℂ) m • (ψ.toFin2ℂ ⬝ᵥ x.toFin2ℂ)
intro r φ ψ:RightHandedWeylr:ℂφ:DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (r • φ).toFin2ℂ = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
simp only [LinearEquiv.map_smul] ψ:RightHandedWeylr:ℂφ:DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ r • DualRightHandedWeyl.toFin2ℂEquiv φ = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
rw [dotProduct_smul ψ:RightHandedWeylr:ℂφ:DualRightHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ DualRightHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ) ψ:RightHandedWeylr:ℂφ:DualRightHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ DualRightHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)] ψ:RightHandedWeylr:ℂφ:DualRightHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ DualRightHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
rfl All goals completed! 🐙}
map_add' ψ ψ':= by ψ:RightHandedWeylψ':RightHandedWeyl⊢ { toFun := fun φ => (ψ + ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } =
{ toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } +
{ toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext (fun φ => ?_) ψ:RightHandedWeylψ':RightHandedWeylφ:DualRightHandedWeyl⊢ { toFun := fun φ => (ψ + ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } φ =
({ toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } +
{ toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ })
φ
simp only [map_add, LinearMap.coe_mk, AddHom.coe_mk, LinearMap.add_apply] ψ:RightHandedWeylψ':RightHandedWeylφ:DualRightHandedWeyl⊢ (RightHandedWeyl.toFin2ℂEquiv ψ + RightHandedWeyl.toFin2ℂEquiv ψ') ⬝ᵥ φ.toFin2ℂ =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rw [add_dotProduct ψ:RightHandedWeylψ':RightHandedWeylφ:DualRightHandedWeyl⊢ RightHandedWeyl.toFin2ℂEquiv ψ ⬝ᵥ φ.toFin2ℂ + RightHandedWeyl.toFin2ℂEquiv ψ' ⬝ᵥ φ.toFin2ℂ =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ All goals completed! 🐙] All goals completed! 🐙
map_smul' r ψ := by r:ℂψ:RightHandedWeyl⊢ { toFun := fun φ => (r • ψ).toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } =
(RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext (fun φ => ?_) r:ℂψ:RightHandedWeylφ:DualRightHandedWeyl⊢ { toFun := fun φ => (r • ψ).toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } φ =
((RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ
simp only [LinearEquiv.map_smul, LinearMap.coe_mk, AddHom.coe_mk] r:ℂψ:RightHandedWeylφ:DualRightHandedWeyl⊢ r • RightHandedWeyl.toFin2ℂEquiv ψ ⬝ᵥ φ.toFin2ℂ =
((RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ
rw [smul_dotProduct r:ℂψ:RightHandedWeylφ:DualRightHandedWeyl⊢ r • (RightHandedWeyl.toFin2ℂEquiv ψ ⬝ᵥ φ.toFin2ℂ) =
((RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ r:ℂψ:RightHandedWeylφ:DualRightHandedWeyl⊢ r • (RightHandedWeyl.toFin2ℂEquiv ψ ⬝ᵥ φ.toFin2ℂ) =
((RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ] r:ℂψ:RightHandedWeylφ:DualRightHandedWeyl⊢ r • (RightHandedWeyl.toFin2ℂEquiv ψ ⬝ᵥ φ.toFin2ℂ) =
((RingHom.id ℂ) r • { toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ
rfl All goals completed! 🐙The bi-linear map corresponding to contraction of a dual-right-handed Weyl fermion with a right-handed Weyl fermion.
def dualRightBi : DualRightHandedWeyl →ₗ[ℂ] RightHandedWeyl →ₗ[ℂ] ℂ where
toFun ψ := {
toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ,
map_add' := by ψ:DualRightHandedWeyl⊢ ∀ (x y : RightHandedWeyl), ψ.toFin2ℂ ⬝ᵥ (x + y).toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ x.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ y.toFin2ℂ
intro φ φ' ψ:DualRightHandedWeylφ:RightHandedWeylφ':RightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (φ + φ').toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ
simp only [map_add] ψ:DualRightHandedWeylφ:RightHandedWeylφ':RightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (RightHandedWeyl.toFin2ℂEquiv φ + RightHandedWeyl.toFin2ℂEquiv φ') =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ
rw [dotProduct_add ψ:DualRightHandedWeylφ:RightHandedWeylφ':RightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ RightHandedWeyl.toFin2ℂEquiv φ + ψ.toFin2ℂ ⬝ᵥ RightHandedWeyl.toFin2ℂEquiv φ' =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ + ψ.toFin2ℂ ⬝ᵥ φ'.toFin2ℂ All goals completed! 🐙] All goals completed! 🐙
map_smul' := by ψ:DualRightHandedWeyl⊢ ∀ (m : ℂ) (x : RightHandedWeyl), ψ.toFin2ℂ ⬝ᵥ (m • x).toFin2ℂ = (RingHom.id ℂ) m • (ψ.toFin2ℂ ⬝ᵥ x.toFin2ℂ)
intro r φ ψ:DualRightHandedWeylr:ℂφ:RightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ (r • φ).toFin2ℂ = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
simp only [LinearEquiv.map_smul] ψ:DualRightHandedWeylr:ℂφ:RightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ r • RightHandedWeyl.toFin2ℂEquiv φ = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
rw [dotProduct_smul ψ:DualRightHandedWeylr:ℂφ:RightHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ RightHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ) ψ:DualRightHandedWeylr:ℂφ:RightHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ RightHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)] ψ:DualRightHandedWeylr:ℂφ:RightHandedWeyl⊢ r • (ψ.toFin2ℂ ⬝ᵥ RightHandedWeyl.toFin2ℂEquiv φ) = (RingHom.id ℂ) r • (ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ)
rfl All goals completed! 🐙}
map_add' ψ ψ':= by ψ:DualRightHandedWeylψ':DualRightHandedWeyl⊢ { toFun := fun φ => (ψ + ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } =
{ toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } +
{ toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext (fun φ => ?_) ψ:DualRightHandedWeylψ':DualRightHandedWeylφ:RightHandedWeyl⊢ { toFun := fun φ => (ψ + ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } φ =
({ toFun := fun φ => ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } +
{ toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ })
φ
simp only [map_add, add_dotProduct, vec2_dotProduct, Fin.isValue, LinearMap.coe_mk,
AddHom.coe_mk, LinearMap.add_apply] All goals completed! 🐙
map_smul' ψ ψ' := by ψ:ℂψ':DualRightHandedWeyl⊢ { toFun := fun φ => (ψ • ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } =
(RingHom.id ℂ) ψ • { toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext (fun φ => ?_) ψ:ℂψ':DualRightHandedWeylφ:RightHandedWeyl⊢ { toFun := fun φ => (ψ • ψ').toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ } φ =
((RingHom.id ℂ) ψ • { toFun := fun φ => ψ'.toFin2ℂ ⬝ᵥ φ.toFin2ℂ, map_add' := ⋯, map_smul' := ⋯ }) φ
simp only [_root_.map_smul, smul_dotProduct, vec2_dotProduct, Fin.isValue, smul_eq_mul,
LinearMap.coe_mk, AddHom.coe_mk, RingHom.id_apply, LinearMap.smul_apply] All goals completed! 🐙The linear map from leftHandedWeyl ⊗ DualLeftHandedWeyl to ℂ given by summing over components of leftHandedWeyl and DualLeftHandedWeyl in the standard basis (i.e. the dot product). Physically, the contraction of a left-handed Weyl fermion with a dual-left-handed Weyl fermion. In index notation this is ψ^a φ_a.
def leftDualContraction : (LeftHandedWeyl.rep.tprod DualLeftHandedWeyl.rep).IntertwiningMap
(Representation.trivial ℂ SL(2,ℂ) ℂ) where
toLinearMap := TensorProduct.lift leftDualBi
isIntertwining' M := TensorProduct.ext' fun ψ φ => by M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ (TensorProduct.lift leftDualBi ∘ₗ (LeftHandedWeyl.rep.tprod DualLeftHandedWeyl.rep) M) (ψ ⊗ₜ[ℂ] φ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift leftDualBi) (ψ ⊗ₜ[ℂ] φ)
change (M.1 *ᵥ ψ.toFin2ℂ) ⬝ᵥ (M.1⁻¹ᵀ *ᵥ φ.toFin2ℂ) = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ↑M *ᵥ ψ.toFin2ℂ ⬝ᵥ (↑M)⁻¹ᵀ *ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rw [dotProduct_mulVec, M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ (↑M *ᵥ ψ.toFin2ℂ) ᵥ* (↑M)⁻¹ᵀ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ((↑M)⁻¹ * ↑M) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ vecMul_transpose, M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ (↑M)⁻¹ *ᵥ ↑M *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ((↑M)⁻¹ * ↑M) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ mulVec_mulVec M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ((↑M)⁻¹ * ↑M) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ((↑M)⁻¹ * ↑M) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ] M:SL(2, ℂ)ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ((↑M)⁻¹ * ↑M) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
simp All goals completed! 🐙lemma leftDualContraction_hom_tmul (ψ : LeftHandedWeyl)
(φ : DualLeftHandedWeyl) :
leftDualContraction (ψ ⊗ₜ φ) = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ := by ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ leftDualContraction (ψ ⊗ₜ[ℂ] φ) = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rfl All goals completed! 🐙
lemma leftDualContraction_basis (i j : Fin 2) :
leftDualContraction (LeftHandedWeyl.basis i ⊗ₜ DualLeftHandedWeyl.basis j) =
if i.1 = j.1 then (1 : ℂ) else 0 := by i:Fin 2j:Fin 2⊢ leftDualContraction (LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j) = if ↑i = ↑j then 1 else 0
rw [leftDualContraction_hom_tmul i:Fin 2j:Fin 2⊢ (LeftHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (DualLeftHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (LeftHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (DualLeftHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (LeftHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (DualLeftHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0
simp only [LeftHandedWeyl.toFin2ℂ_eq_val, LeftHandedWeyl.basis_val,
DualLeftHandedWeyl.toFin2ℂ_eq_val, DualLeftHandedWeyl.basis_val, dotProduct_single, mul_one] i:Fin 2j:Fin 2⊢ Pi.single i 1 j = if ↑i = ↑j then 1 else 0
rw [Pi.single_apply i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0
simp only [Fin.ext_iff] i:Fin 2j:Fin 2⊢ (if ↑j = ↑i then 1 else 0) = if ↑i = ↑j then 1 else 0
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl) h₁ i:Fin 2j:Fin 2⊢ (↑j = ↑i) = (↑i = ↑j)
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a) All goals completed! 🐙The linear map from DualLeftHandedWeyl ⊗ leftHandedWeyl to ℂ given by summing over components of DualLeftHandedWeyl and leftHandedWeyl in the standard basis (i.e. the dot product). Physically, the contraction of a dual-left-handed Weyl fermion with a left-handed Weyl fermion. In index notation this is φ_a ψ^a.
def dualLeftContraction : (DualLeftHandedWeyl.rep.tprod LeftHandedWeyl.rep).IntertwiningMap
(Representation.trivial ℂ SL(2,ℂ) ℂ) where
toLinearMap := TensorProduct.lift dualLeftBi
isIntertwining' M := TensorProduct.ext' fun φ ψ => by M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ (TensorProduct.lift dualLeftBi ∘ₗ (DualLeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) M) (φ ⊗ₜ[ℂ] ψ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift dualLeftBi) (φ ⊗ₜ[ℂ] ψ)
change (M.1⁻¹ᵀ *ᵥ φ.toFin2ℂ) ⬝ᵥ (M.1 *ᵥ ψ.toFin2ℂ) = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ (↑M)⁻¹ᵀ *ᵥ φ.toFin2ℂ ⬝ᵥ ↑M *ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rw [dotProduct_mulVec, M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ ((↑M)⁻¹ᵀ *ᵥ φ.toFin2ℂ) ᵥ* ↑M ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹ * ↑M) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ mulVec_transpose, M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ φ.toFin2ℂ ᵥ* (↑M)⁻¹ ᵥ* ↑M ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹ * ↑M) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ vecMul_vecMul M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹ * ↑M) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹ * ↑M) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ] M:SL(2, ℂ)φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹ * ↑M) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
simp All goals completed! 🐙lemma dualLeftContraction_hom_tmul (φ : DualLeftHandedWeyl) (ψ : LeftHandedWeyl) :
dualLeftContraction (φ ⊗ₜ ψ) = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ := by φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ dualLeftContraction (φ ⊗ₜ[ℂ] ψ) = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rfl All goals completed! 🐙
lemma dualLeftContraction_basis (i j : Fin 2) :
dualLeftContraction (DualLeftHandedWeyl.basis i ⊗ₜ LeftHandedWeyl.basis j) =
if i.1 = j.1 then (1 : ℂ) else 0 := by i:Fin 2j:Fin 2⊢ dualLeftContraction (DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j) = if ↑i = ↑j then 1 else 0
rw [dualLeftContraction_hom_tmul i:Fin 2j:Fin 2⊢ (DualLeftHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (LeftHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (DualLeftHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (LeftHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (DualLeftHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (LeftHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0
simp only [DualLeftHandedWeyl.toFin2ℂ_eq_val, DualLeftHandedWeyl.basis_val,
LeftHandedWeyl.toFin2ℂ_eq_val, LeftHandedWeyl.basis_val, dotProduct_single, mul_one] i:Fin 2j:Fin 2⊢ Pi.single i 1 j = if ↑i = ↑j then 1 else 0
rw [Pi.single_apply i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0
simp only [Fin.ext_iff] i:Fin 2j:Fin 2⊢ (if ↑j = ↑i then 1 else 0) = if ↑i = ↑j then 1 else 0
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl) h₁ i:Fin 2j:Fin 2⊢ (↑j = ↑i) = (↑i = ↑j)
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a) All goals completed! 🐙
The linear map from rightHandedWeyl ⊗ DualRightHandedWeyl to ℂ given by
summing over components of rightHandedWeyl and DualRightHandedWeyl in the
standard basis (i.e. the dot product).
The contraction of a right-handed Weyl fermion with a left-handed Weyl fermion.
In index notation this is ψ^{dot a} φ_{dot a}.
def rightDualContraction : (RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep).IntertwiningMap
(Representation.trivial ℂ SL(2,ℂ) ℂ) where
toLinearMap := TensorProduct.lift rightDualBi
isIntertwining' M := TensorProduct.ext' fun ψ φ => by M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ (TensorProduct.lift rightDualBi ∘ₗ (RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M) (ψ ⊗ₜ[ℂ] φ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift rightDualBi) (ψ ⊗ₜ[ℂ] φ)
change (M.1.map star *ᵥ ψ.toFin2ℂ) ⬝ᵥ (M.1⁻¹.conjTranspose *ᵥ φ.toFin2ℂ) =
ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ (↑M).map star *ᵥ ψ.toFin2ℂ ⬝ᵥ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
have h1 : (M.1)⁻¹ᴴ = ((M.1)⁻¹.map star)ᵀ := by M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ (TensorProduct.lift rightDualBi ∘ₗ (RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M) (ψ ⊗ₜ[ℂ] φ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift rightDualBi) (ψ ⊗ₜ[ℂ] φ) M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M).map star *ᵥ ψ.toFin2ℂ ⬝ᵥ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ rfl M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M).map star *ᵥ ψ.toFin2ℂ ⬝ᵥ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M).map star *ᵥ ψ.toFin2ℂ ⬝ᵥ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rw [dotProduct_mulVec, M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star *ᵥ ψ.toFin2ℂ) ᵥ* (↑M)⁻¹ᴴ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ h1, M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star *ᵥ ψ.toFin2ℂ) ᵥ* ((↑M)⁻¹.map star)ᵀ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ vecMul_transpose, M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M)⁻¹.map star *ᵥ (↑M).map star *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ mulVec_mulVec M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ] M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
have h2 : ((M.1)⁻¹.map star * (M.1).map star) = 1 := by M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ (TensorProduct.lift rightDualBi ∘ₗ (RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M) (ψ ⊗ₜ[ℂ] φ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift rightDualBi) (ψ ⊗ₜ[ℂ] φ) M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
refine transpose_inj.mp ?_ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star)ᵀ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rw [transpose_mul M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star)ᵀ * ((↑M)⁻¹.map star)ᵀ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star)ᵀ * ((↑M)⁻¹.map star)ᵀ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ] M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star)ᵀ * ((↑M)⁻¹.map star)ᵀ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
change M.1.conjTranspose * (M.1)⁻¹.conjTranspose = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M)ᴴ * (↑M)⁻¹ᴴ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rw [← @conjTranspose_mul M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ * ↑M)ᴴ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ * ↑M)ᴴ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ] M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ * ↑M)ᴴ = 1ᵀ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
not_false_eq_true, nonsing_inv_mul, conjTranspose_one, transpose_one] M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ ((↑M)⁻¹.map star * (↑M).map star) *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rw [h2 M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ 1 *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ 1 *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ] M:SL(2, ℂ)ψ:RightHandedWeylφ:DualRightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ 1 *ᵥ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
simp only [one_mulVec, vec2_dotProduct, Fin.isValue, RightHandedWeyl.toFin2ℂEquiv_apply,
DualRightHandedWeyl.toFin2ℂEquiv_apply] All goals completed! 🐙lemma rightDualContraction_hom_tmul (ψ : RightHandedWeyl)
(φ : DualRightHandedWeyl) :
rightDualContraction (ψ ⊗ₜ φ) = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ := by ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ rightDualContraction (ψ ⊗ₜ[ℂ] φ) = ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ
rfl All goals completed! 🐙
lemma rightDualContraction_basis (i j : Fin 2) :
rightDualContraction (RightHandedWeyl.basis i ⊗ₜ DualRightHandedWeyl.basis j) =
if i.1 = j.1 then (1 : ℂ) else 0 := by i:Fin 2j:Fin 2⊢ rightDualContraction (RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j) = if ↑i = ↑j then 1 else 0
rw [rightDualContraction_hom_tmul i:Fin 2j:Fin 2⊢ (RightHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (DualRightHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (RightHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (DualRightHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (RightHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (DualRightHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0
simp only [RightHandedWeyl.toFin2ℂ_eq_val, RightHandedWeyl.basis_val,
DualRightHandedWeyl.toFin2ℂ_eq_val, DualRightHandedWeyl.basis_val, dotProduct_single, mul_one] i:Fin 2j:Fin 2⊢ Pi.single i 1 j = if ↑i = ↑j then 1 else 0
rw [Pi.single_apply i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0
simp only [Fin.ext_iff] i:Fin 2j:Fin 2⊢ (if ↑j = ↑i then 1 else 0) = if ↑i = ↑j then 1 else 0
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl) h₁ i:Fin 2j:Fin 2⊢ (↑j = ↑i) = (↑i = ↑j)
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a) All goals completed! 🐙The linear map from DualRightHandedWeyl ⊗ rightHandedWeyl to ℂ given by summing over components of DualRightHandedWeyl and rightHandedWeyl in the standard basis (i.e. the dot product). The contraction of a right-handed Weyl fermion with a left-handed Weyl fermion. In index notation this is φ_{dot a} ψ^{dot a}.
def dualRightContraction : (DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep).IntertwiningMap
(Representation.trivial ℂ SL(2,ℂ) ℂ) where
toLinearMap := TensorProduct.lift dualRightBi
isIntertwining' M := TensorProduct.ext' fun φ ψ => by M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeyl⊢ (TensorProduct.lift dualRightBi ∘ₗ (DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep) M) (φ ⊗ₜ[ℂ] ψ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift dualRightBi) (φ ⊗ₜ[ℂ] ψ)
change (M.1⁻¹.conjTranspose *ᵥ φ.toFin2ℂ) ⬝ᵥ (M.1.map star *ᵥ ψ.toFin2ℂ) =
φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeyl⊢ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ ⬝ᵥ (↑M).map star *ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
have h1 : (M.1)⁻¹ᴴ = ((M.1)⁻¹.map star)ᵀ := by M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeyl⊢ (TensorProduct.lift dualRightBi ∘ₗ (DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep) M) (φ ⊗ₜ[ℂ] ψ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift dualRightBi) (φ ⊗ₜ[ℂ] ψ) M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ ⬝ᵥ (↑M).map star *ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ rfl M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ ⬝ᵥ (↑M).map star *ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ ⬝ᵥ (↑M).map star *ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rw [dotProduct_mulVec, M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ᴴ *ᵥ φ.toFin2ℂ) ᵥ* (↑M).map star ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ h1, M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (((↑M)⁻¹.map star)ᵀ *ᵥ φ.toFin2ℂ) ᵥ* (↑M).map star ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ mulVec_transpose, M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* (↑M)⁻¹.map star ᵥ* (↑M).map star ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ vecMul_vecMul M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ] M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
have h2 : ((M.1)⁻¹.map star * (M.1).map star) = 1 := by M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeyl⊢ (TensorProduct.lift dualRightBi ∘ₗ (DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep) M) (φ ⊗ₜ[ℂ] ψ) =
((Representation.trivial ℂ SL(2, ℂ) ℂ) M ∘ₗ TensorProduct.lift dualRightBi) (φ ⊗ₜ[ℂ] ψ) M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
refine transpose_inj.mp ?_ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹.map star * (↑M).map star)ᵀ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rw [transpose_mul M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star)ᵀ * ((↑M)⁻¹.map star)ᵀ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star)ᵀ * ((↑M)⁻¹.map star)ᵀ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ] M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M).map star)ᵀ * ((↑M)⁻¹.map star)ᵀ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
change M.1.conjTranspose * (M.1)⁻¹.conjTranspose = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ (↑M)ᴴ * (↑M)⁻¹ᴴ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rw [← @conjTranspose_mul M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ * ↑M)ᴴ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ * ↑M)ᴴ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ] M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀ⊢ ((↑M)⁻¹ * ↑M)ᴴ = 1ᵀ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
simp only [SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq, one_ne_zero,
not_false_eq_true, nonsing_inv_mul, conjTranspose_one, transpose_one] M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* ((↑M)⁻¹.map star * (↑M).map star) ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rw [h2 M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* 1 ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* 1 ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ] M:SL(2, ℂ)φ:DualRightHandedWeylψ:RightHandedWeylh1:(↑M)⁻¹ᴴ = ((↑M)⁻¹.map star)ᵀh2:(↑M)⁻¹.map star * (↑M).map star = 1⊢ φ.toFin2ℂ ᵥ* 1 ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
simp only [vecMul_one, vec2_dotProduct, Fin.isValue, DualRightHandedWeyl.toFin2ℂEquiv_apply,
RightHandedWeyl.toFin2ℂEquiv_apply] All goals completed! 🐙lemma dualRightContraction_hom_tmul (φ : DualRightHandedWeyl)
(ψ : RightHandedWeyl) :
dualRightContraction (φ ⊗ₜ ψ) = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ := by φ:DualRightHandedWeylψ:RightHandedWeyl⊢ dualRightContraction (φ ⊗ₜ[ℂ] ψ) = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ
rfl All goals completed! 🐙
lemma dualRightContraction_basis (i j : Fin 2) :
dualRightContraction (DualRightHandedWeyl.basis i ⊗ₜ RightHandedWeyl.basis j) =
if i.1 = j.1 then (1 : ℂ) else 0 := by i:Fin 2j:Fin 2⊢ dualRightContraction (DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j) = if ↑i = ↑j then 1 else 0
rw [dualRightContraction_hom_tmul i:Fin 2j:Fin 2⊢ (DualRightHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (RightHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (DualRightHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (RightHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (DualRightHandedWeyl.basis i).toFin2ℂ ⬝ᵥ (RightHandedWeyl.basis j).toFin2ℂ = if ↑i = ↑j then 1 else 0
simp only [DualRightHandedWeyl.toFin2ℂ_eq_val, DualRightHandedWeyl.basis_val,
RightHandedWeyl.toFin2ℂ_eq_val, RightHandedWeyl.basis_val, dotProduct_single, mul_one] i:Fin 2j:Fin 2⊢ Pi.single i 1 j = if ↑i = ↑j then 1 else 0
rw [Pi.single_apply i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0 i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0] i:Fin 2j:Fin 2⊢ (if j = i then 1 else 0) = if ↑i = ↑j then 1 else 0
simp only [Fin.ext_iff] i:Fin 2j:Fin 2⊢ (if ↑j = ↑i then 1 else 0) = if ↑i = ↑j then 1 else 0
refine ite_congr ?h₁ (congrFun rfl) (congrFun rfl) h₁ i:Fin 2j:Fin 2⊢ (↑j = ↑i) = (↑i = ↑j)
exact Eq.propIntro (fun a => id (Eq.symm a)) fun a => id (Eq.symm a) All goals completed! 🐙Symmetry properties
lemma leftDualContraction_tmul_symm (ψ : LeftHandedWeyl) (φ : DualLeftHandedWeyl) :
leftDualContraction (ψ ⊗ₜ[ℂ] φ) = dualLeftContraction (φ ⊗ₜ[ℂ] ψ) := by ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ leftDualContraction (ψ ⊗ₜ[ℂ] φ) = dualLeftContraction (φ ⊗ₜ[ℂ] ψ)
rw [leftDualContraction_hom_tmul, ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = dualLeftContraction (φ ⊗ₜ[ℂ] ψ) All goals completed! 🐙 dualLeftContraction_hom_tmul, ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ All goals completed! 🐙 dotProduct_comm ψ:LeftHandedWeylφ:DualLeftHandedWeyl⊢ φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ All goals completed! 🐙] All goals completed! 🐙
lemma dualLeftContraction_tmul_symm (φ : DualLeftHandedWeyl) (ψ : LeftHandedWeyl) :
dualLeftContraction (φ ⊗ₜ[ℂ] ψ) = leftDualContraction (ψ ⊗ₜ[ℂ] φ) := by φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ dualLeftContraction (φ ⊗ₜ[ℂ] ψ) = leftDualContraction (ψ ⊗ₜ[ℂ] φ)
rw [leftDualContraction_tmul_symm φ:DualLeftHandedWeylψ:LeftHandedWeyl⊢ dualLeftContraction (φ ⊗ₜ[ℂ] ψ) = dualLeftContraction (φ ⊗ₜ[ℂ] ψ) All goals completed! 🐙] All goals completed! 🐙
lemma rightDualContraction_tmul_symm (ψ : RightHandedWeyl) (φ : DualRightHandedWeyl) :
rightDualContraction (ψ ⊗ₜ[ℂ] φ) = dualRightContraction (φ ⊗ₜ[ℂ] ψ) := by ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ rightDualContraction (ψ ⊗ₜ[ℂ] φ) = dualRightContraction (φ ⊗ₜ[ℂ] ψ)
rw [rightDualContraction_hom_tmul, ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = dualRightContraction (φ ⊗ₜ[ℂ] ψ) All goals completed! 🐙 dualRightContraction_hom_tmul, ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ ψ.toFin2ℂ ⬝ᵥ φ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ All goals completed! 🐙 dotProduct_comm ψ:RightHandedWeylφ:DualRightHandedWeyl⊢ φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ = φ.toFin2ℂ ⬝ᵥ ψ.toFin2ℂ All goals completed! 🐙] All goals completed! 🐙
lemma dualRightContraction_tmul_symm (φ : DualRightHandedWeyl) (ψ : RightHandedWeyl) :
dualRightContraction (φ ⊗ₜ[ℂ] ψ) = rightDualContraction (ψ ⊗ₜ[ℂ] φ) := by φ:DualRightHandedWeylψ:RightHandedWeyl⊢ dualRightContraction (φ ⊗ₜ[ℂ] ψ) = rightDualContraction (ψ ⊗ₜ[ℂ] φ)
rw [rightDualContraction_tmul_symm φ:DualRightHandedWeylψ:RightHandedWeyl⊢ dualRightContraction (φ ⊗ₜ[ℂ] ψ) = dualRightContraction (φ ⊗ₜ[ℂ] ψ) All goals completed! 🐙] All goals completed! 🐙