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.ContractionUnits 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)⁻¹)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ 1 = ↑M * 1 * (↑M)⁻¹
simp All goals completed! 🐙lemma leftDualLeftUnit_apply_one : leftDualLeftUnit (1 : ℂ) = leftDualLeftUnitVal := by ⊢ leftDualLeftUnit 1 = leftDualLeftUnitVal
change (1 : ℂ) • leftDualLeftUnitVal = leftDualLeftUnitVal ⊢ 1 • leftDualLeftUnitVal = leftDualLeftUnitVal
simp only [one_smul] 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.
lemma dualLeftLeftUnitVal_expand_tmul : dualLeftLeftUnitVal =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 +
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 := by ⊢ dualLeftLeftUnitVal =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1
simp only [dualLeftLeftUnitVal, Fin.isValue] ⊢ dualLeftLeftToMatrix.symm 1 =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1
rw [dualLeftLeftToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, 1 i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 ⊢ ∑ i, ∑ j, 1 i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1] ⊢ ∑ i, ∑ j, 1 i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j =
DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1
simp only [Fin.sum_univ_two, Fin.isValue, one_apply_eq, one_smul, ne_eq, zero_ne_one,
not_false_eq_true, one_apply_ne, zero_smul, add_zero, one_ne_zero, zero_add] All goals completed! 🐙
The dual-left-left unit δₐᵃ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ dualLeftHanded ⊗ leftHanded , manifesting the invariance under the SL(2,ℂ) action.
def dualLeftLeftUnit :
(Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(DualLeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • dualLeftLeftUnitVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • dualLeftLeftUnitVal) =
(let a' := x;
a' • dualLeftLeftUnitVal) +
let a' := y;
a' • dualLeftLeftUnitVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • dualLeftLeftUnitVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • dualLeftLeftUnitVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • dualLeftLeftUnitVal = ((RingHom.id ℂ) m * x) • dualLeftLeftUnitVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • dualLeftLeftUnitVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(DualLeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualLeftLeftUnitVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • dualLeftLeftUnitVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((DualLeftHandedWeyl.rep.tprod LeftHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualLeftLeftUnitVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • dualLeftLeftUnitVal =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M))
(x • dualLeftLeftUnitVal) M:SL(2, ℂ)x:ℂ⊢ x • dualLeftLeftUnitVal =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (x • dualLeftLeftUnitVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • dualLeftLeftUnitVal = x • (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) dualLeftLeftUnitVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ dualLeftLeftUnitVal = (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) dualLeftLeftUnitVal
simp only [dualLeftLeftUnitVal] M:SL(2, ℂ)x:ℂ⊢ dualLeftLeftToMatrix.symm 1 =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm 1)
rw [dualLeftLeftToMatrix_ρ_symm M:SL(2, ℂ)x:ℂ⊢ dualLeftLeftToMatrix.symm 1 = dualLeftLeftToMatrix.symm ((↑M)⁻¹ᵀ * 1 * (↑M)ᵀ) M:SL(2, ℂ)x:ℂ⊢ dualLeftLeftToMatrix.symm 1 = dualLeftLeftToMatrix.symm ((↑M)⁻¹ᵀ * 1 * (↑M)ᵀ)] M:SL(2, ℂ)x:ℂ⊢ dualLeftLeftToMatrix.symm 1 = dualLeftLeftToMatrix.symm ((↑M)⁻¹ᵀ * 1 * (↑M)ᵀ)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ 1 = (↑M)⁻¹ᵀ * 1 * (↑M)ᵀ
simp only [mul_one, ← transpose_mul, SpecialLinearGroup.det_coe, isUnit_iff_ne_zero, ne_eq,
one_ne_zero, not_false_eq_true, mul_nonsing_inv, transpose_one] All goals completed! 🐙
Applying the morphism dualLeftLeftUnit to 1 returns dualLeftLeftUnitVal.
lemma dualLeftLeftUnit_apply_one : dualLeftLeftUnit (1 : ℂ) = dualLeftLeftUnitVal := by ⊢ dualLeftLeftUnit 1 = dualLeftLeftUnitVal
change (1 : ℂ) • dualLeftLeftUnitVal = dualLeftLeftUnitVal ⊢ 1 • dualLeftLeftUnitVal = dualLeftLeftUnitVal
simp only [one_smul] 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.
lemma rightDualRightUnitVal_expand_tmul : rightDualRightUnitVal =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 +
RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 := by ⊢ rightDualRightUnitVal =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1
simp only [rightDualRightUnitVal, Fin.isValue] ⊢ rightDualRightToMatrix.symm 1 =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1
rw [rightDualRightToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, 1 i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1 ⊢ ∑ i, ∑ j, 1 i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1] ⊢ ∑ i, ∑ j, 1 i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j =
RightHandedWeyl.basis 0 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 0 + RightHandedWeyl.basis 1 ⊗ₜ[ℂ] DualRightHandedWeyl.basis 1
simp only [Fin.sum_univ_two, Fin.isValue, one_apply_eq, one_smul, ne_eq, zero_ne_one,
not_false_eq_true, one_apply_ne, zero_smul, add_zero, one_ne_zero, zero_add] 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.
def rightDualRightUnit : (Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • rightDualRightUnitVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • rightDualRightUnitVal) =
(let a' := x;
a' • rightDualRightUnitVal) +
let a' := y;
a' • rightDualRightUnitVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • rightDualRightUnitVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • rightDualRightUnitVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • rightDualRightUnitVal = ((RingHom.id ℂ) m * x) • rightDualRightUnitVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • rightDualRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • rightDualRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • rightDualRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((RightHandedWeyl.rep.tprod DualRightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • rightDualRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • rightDualRightUnitVal =
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M))
(x • rightDualRightUnitVal) M:SL(2, ℂ)x:ℂ⊢ x • rightDualRightUnitVal =
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (x • rightDualRightUnitVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • rightDualRightUnitVal =
x • (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) rightDualRightUnitVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ rightDualRightUnitVal = (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) rightDualRightUnitVal
simp only [rightDualRightUnitVal] M:SL(2, ℂ)x:ℂ⊢ rightDualRightToMatrix.symm 1 =
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm 1)
rw [rightDualRightToMatrix_ρ_symm M:SL(2, ℂ)x:ℂ⊢ rightDualRightToMatrix.symm 1 = rightDualRightToMatrix.symm ((↑M).map star * 1 * (↑M)⁻¹ᴴᵀ) M:SL(2, ℂ)x:ℂ⊢ rightDualRightToMatrix.symm 1 = rightDualRightToMatrix.symm ((↑M).map star * 1 * (↑M)⁻¹ᴴᵀ)] M:SL(2, ℂ)x:ℂ⊢ rightDualRightToMatrix.symm 1 = rightDualRightToMatrix.symm ((↑M).map star * 1 * (↑M)⁻¹ᴴᵀ)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ 1 = (↑M).map star * 1 * (↑M)⁻¹ᴴᵀ
simp only [RCLike.star_def, mul_one] M:SL(2, ℂ)x:ℂ⊢ 1 = (↑M).map ⇑(starRingEnd ℂ) * (↑M)⁻¹ᴴᵀ
symm M:SL(2, ℂ)x:ℂ⊢ (↑M).map ⇑(starRingEnd ℂ) * (↑M)⁻¹ᴴᵀ = 1
refine transpose_eq_one.mp ?h.h.h.a h.h.h.a M:SL(2, ℂ)x:ℂ⊢ ((↑M).map ⇑(starRingEnd ℂ) * (↑M)⁻¹ᴴᵀ)ᵀ = 1
simp only [transpose_mul, transpose_transpose] h.h.h.a M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * ((↑M).map ⇑(starRingEnd ℂ))ᵀ = 1
change (M.1)⁻¹ᴴ * (M.1)ᴴ = 1 h.h.h.a M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * (↑M)ᴴ = 1
rw [@conjTranspose_nonsing_inv h.h.h.a M:SL(2, ℂ)x:ℂ⊢ (↑M)ᴴ⁻¹ * (↑M)ᴴ = 1 h.h.h.a M:SL(2, ℂ)x:ℂ⊢ (↑M)ᴴ⁻¹ * (↑M)ᴴ = 1]h.h.h.a M:SL(2, ℂ)x:ℂ⊢ (↑M)ᴴ⁻¹ * (↑M)ᴴ = 1
simp All goals completed! 🐙lemma rightDualRightUnit_apply_one : rightDualRightUnit (1 : ℂ) = rightDualRightUnitVal := by ⊢ rightDualRightUnit 1 = rightDualRightUnitVal
change (1 : ℂ) • rightDualRightUnitVal = rightDualRightUnitVal ⊢ 1 • rightDualRightUnitVal = rightDualRightUnitVal
simp only [one_smul] 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.
lemma dualRightRightUnitVal_expand_tmul : dualRightRightUnitVal =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 +
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 := by ⊢ dualRightRightUnitVal =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
simp only [dualRightRightUnitVal, Fin.isValue] ⊢ dualRightRightToMatrix.symm 1 =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
rw [dualRightRightToMatrix_symm_expand_tmul ⊢ ∑ i, ∑ j, 1 i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 ⊢ ∑ i, ∑ j, 1 i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1] ⊢ ∑ i, ∑ j, 1 i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j =
DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1
simp only [Fin.sum_univ_two, Fin.isValue, one_apply_eq, one_smul, ne_eq, zero_ne_one,
not_false_eq_true, one_apply_ne, zero_smul, add_zero, one_ne_zero, zero_add] 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.
def dualRightRightUnit : (Representation.trivial ℂ SL(2,ℂ) ℂ).IntertwiningMap
(DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep) where
toFun := fun a =>
let a' : ℂ := a
a' • dualRightRightUnitVal
map_add' := fun x y => by x:ℂy:ℂ⊢ (let a' := x + y;
a' • dualRightRightUnitVal) =
(let a' := x;
a' • dualRightRightUnitVal) +
let a' := y;
a' • dualRightRightUnitVal
simp only [add_smul] All goals completed! 🐙
map_smul' := fun m x => by m:ℂx:ℂ⊢ (let a' := m • x;
a' • dualRightRightUnitVal) =
(RingHom.id ℂ) m •
let a' := x;
a' • dualRightRightUnitVal
simp only [smul_smul] m:ℂx:ℂ⊢ (m • x) • dualRightRightUnitVal = ((RingHom.id ℂ) m * x) • dualRightRightUnitVal
rfl All goals completed! 🐙
isIntertwining' M := by M:SL(2, ℂ)⊢ {
toFun := fun a =>
let a' := a;
a' • dualRightRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M =
(DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualRightRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ }
refine LinearMap.ext fun x : ℂ => ?_ M:SL(2, ℂ)x:ℂ⊢ ({
toFun := fun a =>
let a' := a;
a' • dualRightRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ } ∘ₗ
(Representation.trivial ℂ SL(2, ℂ) ℂ) M)
x =
((DualRightHandedWeyl.rep.tprod RightHandedWeyl.rep) M ∘ₗ
{
toFun := fun a =>
let a' := a;
a' • dualRightRightUnitVal,
map_add' := ⋯, map_smul' := ⋯ })
x
change x • dualRightRightUnitVal =
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M))
(x • dualRightRightUnitVal) M:SL(2, ℂ)x:ℂ⊢ x • dualRightRightUnitVal =
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (x • dualRightRightUnitVal)
simp only [map_smul] M:SL(2, ℂ)x:ℂ⊢ x • dualRightRightUnitVal =
x • (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) dualRightRightUnitVal
apply congrArg M:SL(2, ℂ)x:ℂ⊢ dualRightRightUnitVal = (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) dualRightRightUnitVal
simp only [dualRightRightUnitVal] M:SL(2, ℂ)x:ℂ⊢ dualRightRightToMatrix.symm 1 =
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm 1)
rw [dualRightRightToMatrix_ρ_symm M:SL(2, ℂ)x:ℂ⊢ dualRightRightToMatrix.symm 1 = dualRightRightToMatrix.symm ((↑M)⁻¹ᴴ * 1 * ((↑M).map star)ᵀ) M:SL(2, ℂ)x:ℂ⊢ dualRightRightToMatrix.symm 1 = dualRightRightToMatrix.symm ((↑M)⁻¹ᴴ * 1 * ((↑M).map star)ᵀ)] M:SL(2, ℂ)x:ℂ⊢ dualRightRightToMatrix.symm 1 = dualRightRightToMatrix.symm ((↑M)⁻¹ᴴ * 1 * ((↑M).map star)ᵀ)
apply congrArg M:SL(2, ℂ)x:ℂ⊢ 1 = (↑M)⁻¹ᴴ * 1 * ((↑M).map star)ᵀ
simp only [mul_one, RCLike.star_def] M:SL(2, ℂ)x:ℂ⊢ 1 = (↑M)⁻¹ᴴ * ((↑M).map ⇑(starRingEnd ℂ))ᵀ
symm M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * ((↑M).map ⇑(starRingEnd ℂ))ᵀ = 1
change (M.1)⁻¹ᴴ * (M.1)ᴴ = 1 M:SL(2, ℂ)x:ℂ⊢ (↑M)⁻¹ᴴ * (↑M)ᴴ = 1
rw [@conjTranspose_nonsing_inv M:SL(2, ℂ)x:ℂ⊢ (↑M)ᴴ⁻¹ * (↑M)ᴴ = 1 M:SL(2, ℂ)x:ℂ⊢ (↑M)ᴴ⁻¹ * (↑M)ᴴ = 1] M:SL(2, ℂ)x:ℂ⊢ (↑M)ᴴ⁻¹ * (↑M)ᴴ = 1
simp All goals completed! 🐙lemma dualRightRightUnit_apply_one : dualRightRightUnit (1 : ℂ) = dualRightRightUnitVal := by ⊢ dualRightRightUnit 1 = dualRightRightUnitVal
change (1 : ℂ) • dualRightRightUnitVal = dualRightRightUnitVal ⊢ 1 • dualRightRightUnitVal = dualRightRightUnitVal
simp only [one_smul] 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 := by x:LeftHandedWeyl⊢ (TensorProduct.lid ℂ LeftHandedWeyl)
((LinearMap.rTensor LeftHandedWeyl leftDualContraction.toLinearMap)
((TensorProduct.assoc ℂ LeftHandedWeyl DualLeftHandedWeyl LeftHandedWeyl).symm (x ⊗ₜ[ℂ] dualLeftLeftUnit 1))) =
x
obtain ⟨c, hc⟩ := (Submodule.mem_span_range_iff_exists_fun ℂ).mp
(Basis.mem_span LeftHandedWeyl.basis 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
subst hc 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
simp [- Fintype.sum_sum_type, smul_tmul, leftDualContraction_basis,
dualLeftLeftUnit_apply_one, dualLeftLeftUnitVal_expand_tmul, add_tmul, tmul_add] 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 := by x:DualLeftHandedWeyl⊢ (TensorProduct.lid ℂ DualLeftHandedWeyl)
((LinearMap.rTensor DualLeftHandedWeyl dualLeftContraction.toLinearMap)
((TensorProduct.assoc ℂ DualLeftHandedWeyl LeftHandedWeyl DualLeftHandedWeyl).symm
(x ⊗ₜ[ℂ] leftDualLeftUnit 1))) =
x
obtain ⟨c, hc⟩ := (Submodule.mem_span_range_iff_exists_fun ℂ).mp
(Basis.mem_span DualLeftHandedWeyl.basis 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
subst hc 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
simp [- Fintype.sum_sum_type, smul_tmul, dualLeftContraction_basis,
leftDualLeftUnit_apply_one, leftDualLeftUnitVal_expand_tmul, add_tmul, tmul_add] 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 := by x:RightHandedWeyl⊢ (TensorProduct.lid ℂ RightHandedWeyl)
((LinearMap.rTensor RightHandedWeyl rightDualContraction.toLinearMap)
((TensorProduct.assoc ℂ RightHandedWeyl DualRightHandedWeyl RightHandedWeyl).symm
(x ⊗ₜ[ℂ] dualRightRightUnit 1))) =
x
obtain ⟨c, hc⟩ := (Submodule.mem_span_range_iff_exists_fun ℂ).mp
(Basis.mem_span RightHandedWeyl.basis 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
subst hc 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
simp [- Fintype.sum_sum_type, smul_tmul, rightDualContraction_basis,
dualRightRightUnit_apply_one, dualRightRightUnitVal_expand_tmul, add_tmul, tmul_add] 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 := by x:DualRightHandedWeyl⊢ (TensorProduct.lid ℂ DualRightHandedWeyl)
((LinearMap.rTensor DualRightHandedWeyl dualRightContraction.toLinearMap)
((TensorProduct.assoc ℂ DualRightHandedWeyl RightHandedWeyl DualRightHandedWeyl).symm
(x ⊗ₜ[ℂ] rightDualRightUnit 1))) =
x
obtain ⟨c, hc⟩ := (Submodule.mem_span_range_iff_exists_fun ℂ).mp
(Basis.mem_span DualRightHandedWeyl.basis 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
subst hc 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
simp [- Fintype.sum_sum_type, smul_tmul, dualRightContraction_basis,
rightDualRightUnit_apply_one, rightDualRightUnitVal_expand_tmul, add_tmul, tmul_add] All goals completed! 🐙Symmetry properties of the units
lemma dualLeftLeftUnit_symm :
dualLeftLeftUnit (1 : ℂ) = LinearMap.lTensor _ (LinearEquiv.refl _ _).toLinearMap
(TensorProduct.comm ℂ _ _ (leftDualLeftUnit (1 : ℂ))) := by ⊢ dualLeftLeftUnit 1 =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) (leftDualLeftUnit 1))
rw [dualLeftLeftUnit_apply_one, ⊢ dualLeftLeftUnitVal =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) (leftDualLeftUnit 1)) ⊢ DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) (leftDualLeftUnit 1)) dualLeftLeftUnitVal_expand_tmul ⊢ DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) (leftDualLeftUnit 1)) ⊢ DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) (leftDualLeftUnit 1))] ⊢ DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) (leftDualLeftUnit 1))
rw [leftDualLeftUnit_apply_one, ⊢ DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 + DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1 =
(LinearMap.lTensor DualLeftHandedWeyl ↑(LinearEquiv.refl ℂ LeftHandedWeyl))
((TensorProduct.comm ℂ LeftHandedWeyl DualLeftHandedWeyl) leftDualLeftUnitVal) ⊢ 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)) leftDualLeftUnitVal_expand_tmul ⊢ 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)) ⊢ 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))] ⊢ 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))
rfl All goals completed! 🐙
lemma leftDualLeftUnit_symm :
leftDualLeftUnit (1 : ℂ) = LinearMap.lTensor _ (LinearEquiv.refl _ _).toLinearMap
(TensorProduct.comm ℂ _ _ (dualLeftLeftUnit (1 : ℂ))) := by ⊢ leftDualLeftUnit 1 =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl) (dualLeftLeftUnit 1))
rw [dualLeftLeftUnit_apply_one, ⊢ leftDualLeftUnit 1 =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl) dualLeftLeftUnitVal) ⊢ leftDualLeftUnit 1 =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 +
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)) dualLeftLeftUnitVal_expand_tmul ⊢ leftDualLeftUnit 1 =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 +
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)) ⊢ leftDualLeftUnit 1 =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 +
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1))] ⊢ leftDualLeftUnit 1 =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 +
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1))
rw [leftDualLeftUnit_apply_one, ⊢ leftDualLeftUnitVal =
(LinearMap.lTensor LeftHandedWeyl ↑(LinearEquiv.refl ℂ DualLeftHandedWeyl))
((TensorProduct.comm ℂ DualLeftHandedWeyl LeftHandedWeyl)
(DualLeftHandedWeyl.basis 0 ⊗ₜ[ℂ] LeftHandedWeyl.basis 0 +
DualLeftHandedWeyl.basis 1 ⊗ₜ[ℂ] LeftHandedWeyl.basis 1)) ⊢ 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)) leftDualLeftUnitVal_expand_tmul ⊢ 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)) ⊢ 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))] ⊢ 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))
rfl All goals completed! 🐙
lemma dualRightRightUnit_symm :
dualRightRightUnit (1 : ℂ) = LinearMap.lTensor _ (LinearEquiv.refl _ _).toLinearMap
(TensorProduct.comm ℂ _ _ (rightDualRightUnit (1 : ℂ))) := by ⊢ dualRightRightUnit 1 =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) (rightDualRightUnit 1))
rw [dualRightRightUnit_apply_one, ⊢ dualRightRightUnitVal =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) (rightDualRightUnit 1)) ⊢ DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) (rightDualRightUnit 1)) dualRightRightUnitVal_expand_tmul ⊢ DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) (rightDualRightUnit 1)) ⊢ DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) (rightDualRightUnit 1))] ⊢ DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) (rightDualRightUnit 1))
rw [rightDualRightUnit_apply_one, ⊢ DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 + DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1 =
(LinearMap.lTensor DualRightHandedWeyl ↑(LinearEquiv.refl ℂ RightHandedWeyl))
((TensorProduct.comm ℂ RightHandedWeyl DualRightHandedWeyl) rightDualRightUnitVal) ⊢ 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)) rightDualRightUnitVal_expand_tmul ⊢ 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)) ⊢ 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))] ⊢ 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))
rfl All goals completed! 🐙
lemma rightDualRightUnit_symm :
rightDualRightUnit (1 : ℂ) = LinearMap.lTensor _ (LinearEquiv.refl _ _).toLinearMap
(TensorProduct.comm ℂ _ _ (dualRightRightUnit (1 : ℂ))) := by ⊢ rightDualRightUnit 1 =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl) (dualRightRightUnit 1))
rw [dualRightRightUnit_apply_one, ⊢ rightDualRightUnit 1 =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl) dualRightRightUnitVal) ⊢ rightDualRightUnit 1 =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 +
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)) dualRightRightUnitVal_expand_tmul ⊢ rightDualRightUnit 1 =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 +
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)) ⊢ rightDualRightUnit 1 =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 +
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1))] ⊢ rightDualRightUnit 1 =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 +
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1))
rw [rightDualRightUnit_apply_one, ⊢ rightDualRightUnitVal =
(LinearMap.lTensor RightHandedWeyl ↑(LinearEquiv.refl ℂ DualRightHandedWeyl))
((TensorProduct.comm ℂ DualRightHandedWeyl RightHandedWeyl)
(DualRightHandedWeyl.basis 0 ⊗ₜ[ℂ] RightHandedWeyl.basis 0 +
DualRightHandedWeyl.basis 1 ⊗ₜ[ℂ] RightHandedWeyl.basis 1)) ⊢ 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)) rightDualRightUnitVal_expand_tmul ⊢ 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)) ⊢ 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))] ⊢ 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))
rfl All goals completed! 🐙