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.DualRightHandedTensor product of two Weyl fermion
@[expose] public sectionEquivalences to matrices.
Equivalence of leftHanded ⊗ leftHanded to 2 x 2 complex matrices.
def leftLeftToMatrix : (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl) ≃ₗ[ℂ] Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct LeftHandedWeyl.basis LeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding leftLeftToMatrix in terms of the standard basis.
M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) (i, j) =
M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply LeftHandedWeyl.basis LeftHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of dualLeftHanded ⊗ dualLeftHanded to 2 x 2 complex matrices.
def dualLeftdualLeftToMatrix : (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding dualLeftdualLeftToMatrix in terms of the standard basis.
lemma dualLeftdualLeftToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
dualLeftdualLeftToMatrix.symm M = ∑ i, ∑ j, M i j •
(DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ dualLeftdualLeftToMatrix.symm M = ∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
simp only [dualLeftdualLeftToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (i, j) =
M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply
DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of leftHanded ⊗ dualLeftHanded to 2 x 2 complex matrices.
def leftDualLeftToMatrix : (LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct LeftHandedWeyl.basis DualLeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding leftDualLeftToMatrix in terms of the standard basis.
lemma leftDualLeftToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
leftDualLeftToMatrix.symm M = ∑ i, ∑ j, M i j •
(LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ leftDualLeftToMatrix.symm M = ∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
simp only [leftDualLeftToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis) (i, j) =
M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] DualLeftHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply LeftHandedWeyl.basis DualLeftHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of dualLeftHanded ⊗ leftHanded to 2 x 2 complex matrices.
def dualLeftLeftToMatrix : (DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct DualLeftHandedWeyl.basis LeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding dualLeftLeftToMatrix in terms of the standard basis.
lemma dualLeftLeftToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
dualLeftLeftToMatrix.symm M = ∑ i, ∑ j, M i j •
(DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ dualLeftLeftToMatrix.symm M = ∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j
simp only [dualLeftLeftToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis) (i, j) =
M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] LeftHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply DualLeftHandedWeyl.basis LeftHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of rightHanded ⊗ rightHanded to 2 x 2 complex matrices.
def rightRightToMatrix : (RightHandedWeyl ⊗[ℂ] RightHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct RightHandedWeyl.basis RightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding rightRightToMatrix in terms of the standard basis.
lemma rightRightToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
rightRightToMatrix.symm M = ∑ i, ∑ j, M i j •
(RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ rightRightToMatrix.symm M = ∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
simp only [rightRightToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (i, j) =
M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply RightHandedWeyl.basis RightHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of dualRightHanded ⊗ dualRightHanded to 2 x 2 complex matrices.
def dualRightDualRightToMatrix : (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct DualRightHandedWeyl.basis DualRightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding dualRightDualRightToMatrix in terms of the standard basis.
lemma dualRightDualRightToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
dualRightDualRightToMatrix.symm M =
∑ i, ∑ j, M i j • (DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ dualRightDualRightToMatrix.symm M = ∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
simp only [dualRightDualRightToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (i, j) =
M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
exact congrArg _
(Basis.tensorProduct_apply DualRightHandedWeyl.basis DualRightHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of rightHanded ⊗ dualRightHanded to 2 x 2 complex matrices.
def rightDualRightToMatrix : (RightHandedWeyl ⊗[ℂ] DualRightHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct RightHandedWeyl.basis DualRightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding rightDualRightToMatrix in terms of the standard basis.
lemma rightDualRightToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
rightDualRightToMatrix.symm M = ∑ i, ∑ j, M i j •
(RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ rightDualRightToMatrix.symm M = ∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
simp only [rightDualRightToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (i, j) =
M i j • RightHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply RightHandedWeyl.basis DualRightHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of dualRightHanded ⊗ rightHanded to 2 x 2 complex matrices.
def dualRightRightToMatrix : (DualRightHandedWeyl ⊗[ℂ] RightHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct DualRightHandedWeyl.basis RightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding dualRightRightToMatrix in terms of the standard basis.
lemma dualRightRightToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
dualRightRightToMatrix.symm M = ∑ i, ∑ j, M i j •
(DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ dualRightRightToMatrix.symm M = ∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
simp only [dualRightRightToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (i, j) =
M i j • DualRightHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply DualRightHandedWeyl.basis RightHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of dualLeftHanded ⊗ dualRightHanded to 2 x 2 complex matrices.
def dualLeftDualRightToMatrix : (DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeyl) ≃ₗ[ℂ]
Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct DualLeftHandedWeyl.basis DualRightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding dualLeftDualRightToMatrix in terms of the standard basis.
lemma dualLeftDualRightToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
dualLeftDualRightToMatrix.symm M = ∑ i, ∑ j, M i j •
(DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ dualLeftDualRightToMatrix.symm M = ∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
simp only [dualLeftDualRightToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis) (i, j) =
M i j • DualLeftHandedWeyl.basis i ⊗ₜ[ℂ] DualRightHandedWeyl.basis j
exact congrArg _
(Basis.tensorProduct_apply DualLeftHandedWeyl.basis DualRightHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of leftHanded ⊗ rightHanded to 2 x 2 complex matrices.
def leftRightToMatrix : (LeftHandedWeyl ⊗[ℂ] RightHandedWeyl) ≃ₗ[ℂ] Matrix (Fin 2) (Fin 2) ℂ :=
(Basis.tensorProduct LeftHandedWeyl.basis RightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)
Expanding leftRightToMatrix in terms of the standard basis.
lemma leftRightToMatrix_symm_expand_tmul (M : Matrix (Fin 2) (Fin 2) ℂ) :
leftRightToMatrix.symm M = ∑ i, ∑ j, M i j •
(LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j) := by M:Matrix (Fin 2) (Fin 2) ℂ⊢ leftRightToMatrix.symm M = ∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
simp only [leftRightToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis jM:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) i •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) i =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j rw [Fintype.sum_prod_type M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j] M:Matrix (Fin 2) (Fin 2) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M))
(x, y) •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (x, y) =
∑ i, ∑ j, M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 2) (Fin 2) ℂi:Fin 2x✝¹:i ∈ Finset.univj:Fin 2x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M)) (i, j) •
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (i, j) =
M i j • LeftHandedWeyl.basis i ⊗ₜ[ℂ] RightHandedWeyl.basis j
exact congrArg _ (Basis.tensorProduct_apply LeftHandedWeyl.basis RightHandedWeyl.basis i j) All goals completed! 🐙
· M:Matrix (Fin 2) (Fin 2) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2)).symm ((LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
The coercion of Finsupp.linearEquivFunOnFinite to a function is the underlying
finitely-supported function, used to bridge it with Matrix.mulVec.
private lemma coe_linearEquivFunOnFinite (g : (Fin 2 × Fin 2) →₀ ℂ) :
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) g = ⇑g := rflGroup actions
The group action of SL(2,ℂ) on leftHanded ⊗ leftHanded is equivalent to
M.1 * leftLeftToMatrix v * (M.1)ᵀ.
set_option backward.isDefEq.respectTransparency false in
lemma leftLeftToMatrix_ρ (v : (LeftHandedWeyl ⊗[ℂ] LeftHandedWeyl)) (M : SL(2,ℂ)) :
leftLeftToMatrix (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M) v) =
M.1 * leftLeftToMatrix v * (M.1)ᵀ := by v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) = ↑M * leftLeftToMatrix v * (↑M)ᵀ
nth_rewrite 1 [leftLeftToMatrix] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ ((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) =
↑M * leftLeftToMatrix v * (↑M)ᵀ
simp only [LinearEquiv.trans_apply] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))) =
↑M * leftLeftToMatrix v * (↑M)ᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr (v)))) v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v))v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
↑M * leftLeftToMatrix v * (↑M)ᵀ
· v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) apply congrArg v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (LeftHandedWeyl.basis.tensorProduct
LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))⊢ ⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)
rw [h1 v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))⊢ ⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
⇑((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
↑M * leftLeftToMatrix v * (↑M)ᵀ v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
↑M * leftLeftToMatrix v * (↑M)ᵀ] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
↑M * leftLeftToMatrix v * (↑M)ᵀ
funext i j v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v))
i j =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis)
(LeftHandedWeyl.rep M)) (i, j) k)
* leftLeftToMatrix v k.1 k.2) = _ v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) k *
leftLeftToMatrix v k.1 k.2 =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i j
rw [Fintype.sum_prod_type v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, y) *
leftLeftToMatrix v (x, y).1 (x, y).2 =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i j v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, y) *
leftLeftToMatrix v (x, y).1 (x, y).2 =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i j] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, y) *
leftLeftToMatrix v (x, y).1 (x, y).2 =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i j
simp_rw [ v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, x_1) *
leftLeftToMatrix v x x_1 =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i jkroneckerMap_apply, v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
(↑M * leftLeftToMatrix v * (↑M)ᵀ) i j Matrix.mul_apply, v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * (↑M)ᵀ x j Matrix.transpose_apply v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x]
have h1 : ∑ x : Fin 2, (∑ j : Fin 2, M.1 i j * leftLeftToMatrix v j x) * M.1 j x
= ∑ x : Fin 2, ∑ x1 : Fin 2, (M.1 i x1 * leftLeftToMatrix v x1 x) * M.1 j x := by v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) = ↑M * leftLeftToMatrix v * (↑M)ᵀ v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x
congr e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x) = fun x => ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x
funext x e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x
rw [Finset.sum_mul e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, ↑M i i_1 * leftLeftToMatrix v i_1 x * ↑M j x = ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x
rw [h1 v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
leftLeftToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
rw [Finset.sum_comm v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
leftLeftToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
leftLeftToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x] v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
leftLeftToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
congr e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
leftLeftToMatrix v x y) =
fun x => ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
funext x e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x *
leftLeftToMatrix v x_1 x =
∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
congr e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x *
leftLeftToMatrix v x_1 x) =
fun x1 => ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
funext x1 e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x *
leftLeftToMatrix v x1 x =
↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
simp only [LeftHandedWeyl.rep_toMatrix] e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ ↑M i x1 * ↑M j x * leftLeftToMatrix v x1 x = ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
rw [mul_assoc e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M j x * leftLeftToMatrix v x1 x) = ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M j x * leftLeftToMatrix v x1 x) = ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x]e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M j x * leftLeftToMatrix v x1 x) = ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
nth_rewrite 2 [mul_comm] e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ ↑M i x1 * (leftLeftToMatrix v x1 x * ↑M j x) = ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x
rw [← mul_assoc e_f.e_f v:LeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ j, ↑M i j * leftLeftToMatrix v j x) * ↑M j x = ∑ x, ∑ x1, ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x = ↑M i x1 * leftLeftToMatrix v x1 x * ↑M j x All goals completed! 🐙] All goals completed! 🐙
The group action of SL(2,ℂ) on dualLeftHanded ⊗ dualLeftHanded is equivalent to
(M.1⁻¹)ᵀ * leftLeftToMatrix v * (M.1⁻¹).
set_option backward.isDefEq.respectTransparency false in
lemma dualLeftdualLeftToMatrix_ρ (v : (DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl)) (M : SL(2,ℂ)) :
dualLeftdualLeftToMatrix (TensorProduct.map (DualLeftHandedWeyl.rep M)
(DualLeftHandedWeyl.rep M) v) =
(M.1⁻¹)ᵀ * dualLeftdualLeftToMatrix v * (M.1⁻¹) := by v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ dualLeftdualLeftToMatrix ((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹
nth_rewrite 1 [dualLeftdualLeftToMatrix] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ ((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹
simp only [LinearEquiv.trans_apply] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v))) v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v))v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹
· v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) apply congrArg v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (DualLeftHandedWeyl.basis.tensorProduct
DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))⊢ ⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)
rw [h1 v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))⊢ ⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹ v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹
funext i j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v))
i j =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.rep M)) (i, j) k)
* dualLeftdualLeftToMatrix v k.1 k.2) = _ v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j) k *
dualLeftdualLeftToMatrix v k.1 k.2 =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i j
rw [Fintype.sum_prod_type v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, y) *
dualLeftdualLeftToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, y) *
dualLeftdualLeftToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i j] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, y) *
dualLeftdualLeftToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i j
simp_rw [ v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, x_1) *
dualLeftdualLeftToMatrix v x x_1 =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i jkroneckerMap_apply, v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
((↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹) i j Matrix.mul_apply, v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᵀ i j * dualLeftdualLeftToMatrix v j x) * (↑M)⁻¹ x j Matrix.transpose_apply v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, (M.1)⁻¹ x1 i *
dualLeftdualLeftToMatrix v x1 x) * (M.1)⁻¹ x j
= ∑ x : Fin 2, ∑ x1 : Fin 2, ((M.1)⁻¹ x1 i *
dualLeftdualLeftToMatrix v x1 x) * (M.1)⁻¹ x j := by v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ dualLeftdualLeftToMatrix ((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix v * (↑M)⁻¹ v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j
congr e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j) = fun x =>
∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j
funext x e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j
rw [Finset.sum_mul e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M)⁻¹ i_1 i * dualLeftdualLeftToMatrix v i_1 x * (↑M)⁻¹ x j =
∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftdualLeftToMatrix v x_1 x) * (↑M)⁻¹ x j
rw [h1 v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
dualLeftdualLeftToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
rw [Finset.sum_comm v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
dualLeftdualLeftToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
dualLeftdualLeftToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j] v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
dualLeftdualLeftToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
congr e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ (fun y =>
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
dualLeftdualLeftToMatrix v x y) =
fun x => ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
funext x e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x *
dualLeftdualLeftToMatrix v x_1 x =
∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
congr e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x *
dualLeftdualLeftToMatrix v x_1 x) =
fun x1 => (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
funext x1 e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x *
dualLeftdualLeftToMatrix v x1 x =
(↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
simp only [DualLeftHandedWeyl.rep_toMatrix, transpose_apply] e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2x1:Fin 2⊢ (↑M)⁻¹ x1 i * (↑M)⁻¹ x j * dualLeftdualLeftToMatrix v x1 x = (↑M)⁻¹ x1 i * dualLeftdualLeftToMatrix v x1 x * (↑M)⁻¹ x j
ring All goals completed! 🐙
The group action of SL(2,ℂ) on leftHanded ⊗ dualLeftHanded is equivalent to
M.1 * leftDualLeftToMatrix v * (M.1⁻¹).
set_option backward.isDefEq.respectTransparency false in
lemma leftDualLeftToMatrix_ρ (v : (LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeyl)) (M : SL(2,ℂ)) :
leftDualLeftToMatrix (TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M) v) =
M.1 * leftDualLeftToMatrix v * (M.1⁻¹) := by v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ leftDualLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹
nth_rewrite 1 [leftDualLeftToMatrix] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ ((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹
simp only [LinearEquiv.trans_apply] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr (v)))) v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v))v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹
· v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) apply congrArg v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (LeftHandedWeyl.basis.tensorProduct
DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))⊢ ⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)
rw [h1 v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v))⊢ ⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) =
⇑((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹ v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v)) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹
funext i j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct DualLeftHandedWeyl.basis).repr v))
i j =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.rep M)) (i, j) k)
* leftDualLeftToMatrix v k.1 k.2) = _ v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j) k *
leftDualLeftToMatrix v k.1 k.2 =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i j
rw [Fintype.sum_prod_type v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, y) *
leftDualLeftToMatrix v (x, y).1 (x, y).2 =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, y) *
leftDualLeftToMatrix v (x, y).1 (x, y).2 =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i j] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, y) *
leftDualLeftToMatrix v (x, y).1 (x, y).2 =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i j
simp_rw [ v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M)) (i, j)
(x, x_1) *
leftDualLeftToMatrix v x x_1 =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i jkroneckerMap_apply, v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
(↑M * leftDualLeftToMatrix v * (↑M)⁻¹) i j Matrix.mul_apply v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, M.1 i x1 * leftDualLeftToMatrix v x1 x) * (M.1⁻¹) x j
= ∑ x : Fin 2, ∑ x1 : Fin 2, (M.1 i x1 * leftDualLeftToMatrix v x1 x) * (M.1⁻¹) x j := by v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)⊢ leftDualLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) v) =
↑M * leftDualLeftToMatrix v * (↑M)⁻¹ v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j
congr e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j) = fun x =>
∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j
funext x e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j = ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j
rw [Finset.sum_mul e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, ↑M i i_1 * leftDualLeftToMatrix v i_1 x * (↑M)⁻¹ x j = ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftDualLeftToMatrix v j x) * (↑M)⁻¹ x j
rw [h1 v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x_1 *
leftDualLeftToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
rw [Finset.sum_comm v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
leftDualLeftToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
leftDualLeftToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j] v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
leftDualLeftToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
congr e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j⊢ (fun y =>
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j y *
leftDualLeftToMatrix v x y) =
fun x => ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
funext x e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x *
leftDualLeftToMatrix v x_1 x =
∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
congr e_f.e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x *
leftDualLeftToMatrix v x_1 x) =
fun x1 => ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
funext x1 e_f.e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) j x *
leftDualLeftToMatrix v x1 x =
↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
simp only [LeftHandedWeyl.rep_toMatrix, DualLeftHandedWeyl.rep_toMatrix, transpose_apply] e_f.e_f v:LeftHandedWeyl ⊗[ℂ] DualLeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x) * (↑M)⁻¹ x j =
∑ x, ∑ x1, ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x jx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M)⁻¹ x j * leftDualLeftToMatrix v x1 x = ↑M i x1 * leftDualLeftToMatrix v x1 x * (↑M)⁻¹ x j
ring All goals completed! 🐙
The group action of SL(2,ℂ) on dualLeftHanded ⊗ leftHanded is equivalent to
(M.1⁻¹)ᵀ * leftDualLeftToMatrix v * (M.1)ᵀ.
set_option backward.isDefEq.respectTransparency false in
lemma dualLeftLeftToMatrix_ρ (v : (DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeyl)) (M : SL(2,ℂ)) :
dualLeftLeftToMatrix (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M) v) =
(M.1⁻¹)ᵀ * dualLeftLeftToMatrix v * (M.1)ᵀ := by v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ dualLeftLeftToMatrix ((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ
nth_rewrite 1 [dualLeftLeftToMatrix] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ ((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ
simp only [LinearEquiv.trans_apply] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr (v)))) v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v))v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ
· v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) apply congrArg v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (DualLeftHandedWeyl.basis.tensorProduct
LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))⊢ ⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)
rw [h1 v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v))⊢ ⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) =
⇑((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ
funext i j v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct LeftHandedWeyl.basis).repr v))
i j =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis)
(LeftHandedWeyl.rep M)) (i, j) k)
* dualLeftLeftToMatrix v k.1 k.2) = _ v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) k *
dualLeftLeftToMatrix v k.1 k.2 =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i j
rw [Fintype.sum_prod_type v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, y) *
dualLeftLeftToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i j v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, y) *
dualLeftLeftToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i j] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, y) *
dualLeftLeftToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i j
simp_rw [ v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M)) (i, j) (x, x_1) *
dualLeftLeftToMatrix v x x_1 =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i jkroneckerMap_apply, v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
((↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ) i j Matrix.mul_apply, v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᵀ i j * dualLeftLeftToMatrix v j x) * (↑M)ᵀ x j Matrix.transpose_apply v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, (M.1)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * M.1 j x
= ∑ x : Fin 2, ∑ x1 : Fin 2, ((M.1)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * M.1 j x:= by v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)⊢ dualLeftLeftToMatrix ((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix v * (↑M)ᵀ v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x
congr e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x) = fun x =>
∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x
funext x e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x = ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x
rw [Finset.sum_mul e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M)⁻¹ i_1 i * dualLeftLeftToMatrix v i_1 x * ↑M j x = ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftLeftToMatrix v x_1 x) * ↑M j x
rw [h1 v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x_1 *
dualLeftLeftToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
rw [Finset.sum_comm v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
dualLeftLeftToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
dualLeftLeftToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x] v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
dualLeftLeftToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
congr e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j y *
dualLeftLeftToMatrix v x y) =
fun x => ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
funext x e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x *
dualLeftLeftToMatrix v x_1 x =
∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
congr e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x *
dualLeftLeftToMatrix v x_1 x) =
fun x1 => (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
funext x1 e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) j x *
dualLeftLeftToMatrix v x1 x =
(↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
simp only [DualLeftHandedWeyl.rep_toMatrix, transpose_apply, LeftHandedWeyl.rep_toMatrix] e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] LeftHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x) * ↑M j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j xx:Fin 2x1:Fin 2⊢ (↑M)⁻¹ x1 i * ↑M j x * dualLeftLeftToMatrix v x1 x = (↑M)⁻¹ x1 i * dualLeftLeftToMatrix v x1 x * ↑M j x
ring All goals completed! 🐙
The group action of SL(2,ℂ) on rightHanded ⊗ rightHanded is equivalent to
(M.1.map star) * rightRightToMatrix v * ((M.1.map star))ᵀ.
set_option backward.isDefEq.respectTransparency false in
lemma rightRightToMatrix_ρ (v : (RightHandedWeyl ⊗[ℂ] RightHandedWeyl)) (M : SL(2,ℂ)) :
rightRightToMatrix (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M) v) =
(M.1.map star) * rightRightToMatrix v * ((M.1.map star))ᵀ := by v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ rightRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ
nth_rewrite 1 [rightRightToMatrix] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ ((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ
simp only [LinearEquiv.trans_apply] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr (v)))) v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v))v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ
· v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) apply congrArg v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (RightHandedWeyl.basis.tensorProduct
RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ ⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
rw [h1 v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ ⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
⇑((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ
funext i j v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v))
i j =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis)
(RightHandedWeyl.rep M)) (i, j) k)
* rightRightToMatrix v k.1 k.2) = _ v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) k *
rightRightToMatrix v k.1 k.2 =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i j
rw [Fintype.sum_prod_type v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
rightRightToMatrix v (x, y).1 (x, y).2 =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i j v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
rightRightToMatrix v (x, y).1 (x, y).2 =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i j] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
rightRightToMatrix v (x, y).1 (x, y).2 =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i j
simp_rw [ v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, x_1) *
rightRightToMatrix v x x_1 =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i jkroneckerMap_apply, v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
((↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ) i j Matrix.mul_apply, v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * ((↑M).map star)ᵀ x j Matrix.transpose_apply v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, (M.1.map star) i x1 * rightRightToMatrix v x1 x) *
(M.1.map star) j x = ∑ x : Fin 2, ∑ x1 : Fin 2,
((M.1.map star) i x1 * rightRightToMatrix v x1 x) * (M.1.map star) j x:= by v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ rightRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
(↑M).map star * rightRightToMatrix v * ((↑M).map star)ᵀ v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x
congr e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x) = fun x =>
∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x
funext x e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x
rw [Finset.sum_mul e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M).map star i i_1 * rightRightToMatrix v i_1 x * (↑M).map star j x =
∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightRightToMatrix v j x) * (↑M).map star j x
rw [h1 v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
rightRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
rw [Finset.sum_comm v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
rightRightToMatrix v x y =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
rightRightToMatrix v x y =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x] v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
rightRightToMatrix v x y =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
congr e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
rightRightToMatrix v x y) =
fun x => ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
funext x e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
rightRightToMatrix v x_1 x =
∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
congr e_f.e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
rightRightToMatrix v x_1 x) =
fun x1 => (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
funext x1 e_f.e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
rightRightToMatrix v x1 x =
(↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
simp only [RightHandedWeyl.rep_toMatrix] e_f.e_f v:RightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2x1:Fin 2⊢ (↑M).map star i x1 * (↑M).map star j x * rightRightToMatrix v x1 x =
(↑M).map star i x1 * rightRightToMatrix v x1 x * (↑M).map star j x
ring All goals completed! 🐙
The group action of SL(2,ℂ) on dualRightHanded ⊗ dualRightHanded is equivalent to
((M.1⁻¹).conjTranspose * rightRightToMatrix v * (((M.1⁻¹).conjTranspose)ᵀ.
set_option backward.isDefEq.respectTransparency false in
lemma dualRightDualRightToMatrix_ρ (v : (DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(M : SL(2,ℂ)) :
dualRightDualRightToMatrix (TensorProduct.map (DualRightHandedWeyl.rep M)
(DualRightHandedWeyl.rep M) v) =
((M.1⁻¹).conjTranspose) * dualRightDualRightToMatrix v * (((M.1⁻¹).conjTranspose)ᵀ) := by v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ dualRightDualRightToMatrix ((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
nth_rewrite 1 [dualRightDualRightToMatrix] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ ((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
simp only [LinearEquiv.trans_apply] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr (v)))) v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v))v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
· v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) apply congrArg v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (DualRightHandedWeyl.basis.tensorProduct
DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ ⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
rw [h1 v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ ⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
⇑((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
funext i j v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v))
i j =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis)
(DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis)
(DualRightHandedWeyl.rep M)) (i, j) k)
* dualRightDualRightToMatrix v k.1 k.2) = _ v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
k *
dualRightDualRightToMatrix v k.1 k.2 =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
rw [Fintype.sum_prod_type v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
dualRightDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
dualRightDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
dualRightDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
simp_rw [ v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, x_1) *
dualRightDualRightToMatrix v x x_1 =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i jkroneckerMap_apply, v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
((↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j Matrix.mul_apply, v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴᵀ x j Matrix.transpose_apply v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) *
(↑M)⁻¹ᴴ j x = ∑ x : Fin 2, ∑ x1 : Fin 2,
((↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x := by v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ dualRightDualRightToMatrix ((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
congr e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x) = fun x =>
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
funext x e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
rw [Finset.sum_mul e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M)⁻¹ᴴ i i_1 * dualRightDualRightToMatrix v i_1 x * (↑M)⁻¹ᴴ j x =
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
rw [h1 v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualRightDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
rw [Finset.sum_comm v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualRightDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualRightDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x] v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualRightDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
congr e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualRightDualRightToMatrix v x y) =
fun x => ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
funext x e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
dualRightDualRightToMatrix v x_1 x =
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
congr e_f.e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
dualRightDualRightToMatrix v x_1 x) =
fun x1 => (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
funext x1 e_f.e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
dualRightDualRightToMatrix v x1 x =
(↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
simp only [DualRightHandedWeyl.rep_toMatrix] e_f.e_f v:DualRightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2x1:Fin 2⊢ (↑M)⁻¹ᴴ i x1 * (↑M)⁻¹ᴴ j x * dualRightDualRightToMatrix v x1 x =
(↑M)⁻¹ᴴ i x1 * dualRightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
ring All goals completed! 🐙
The group action of SL(2,ℂ) on rightHanded ⊗ dualRightHanded is equivalent to
(M.1.map star) * rightDualRightToMatrix v * (((M.1⁻¹).conjTranspose)ᵀ.
set_option backward.isDefEq.respectTransparency false in
lemma rightDualRightToMatrix_ρ (v : (RightHandedWeyl ⊗[ℂ] DualRightHandedWeyl)) (M : SL(2,ℂ)) :
rightDualRightToMatrix (TensorProduct.map (RightHandedWeyl.rep M)
(DualRightHandedWeyl.rep M) v) =
(M.1.map star) * rightDualRightToMatrix v * (((M.1⁻¹).conjTranspose)ᵀ) := by v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ rightDualRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
nth_rewrite 1 [rightDualRightToMatrix] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ ((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
simp only [LinearEquiv.trans_apply] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr (v)))) v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v))v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
· v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) apply congrArg v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (RightHandedWeyl.basis.tensorProduct
DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ ⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
rw [h1 v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ ⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
⇑((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
funext i j v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((RightHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v))
i j =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis)
(RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis)
(DualRightHandedWeyl.rep M)) (i, j) k)
* rightDualRightToMatrix v k.1 k.2) = _ v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
k *
rightDualRightToMatrix v k.1 k.2 =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
rw [Fintype.sum_prod_type v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
rightDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
rightDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
rightDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
simp_rw [ v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, x_1) *
rightDualRightToMatrix v x x_1 =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i jkroneckerMap_apply, v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
((↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j Matrix.mul_apply, v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴᵀ x j Matrix.transpose_apply v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, (M.1.map star) i x1 * rightDualRightToMatrix v x1 x)
* (↑M)⁻¹ᴴ j x = ∑ x : Fin 2, ∑ x1 : Fin 2,
((M.1.map star) i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x := by v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ rightDualRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M).map star * rightDualRightToMatrix v * (↑M)⁻¹ᴴᵀ v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
congr e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x) = fun x =>
∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
funext x e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
rw [Finset.sum_mul e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M).map star i i_1 * rightDualRightToMatrix v i_1 x * (↑M)⁻¹ᴴ j x =
∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M).map star i j * rightDualRightToMatrix v j x) * (↑M)⁻¹ᴴ j x
rw [h1 v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
rightDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
rw [Finset.sum_comm v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
rightDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
rightDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x] v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
rightDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
congr e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
rightDualRightToMatrix v x y) =
fun x => ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
funext x e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
rightDualRightToMatrix v x_1 x =
∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
congr e_f.e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
rightDualRightToMatrix v x_1 x) =
fun x1 => (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
funext x1 e_f.e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
rightDualRightToMatrix v x1 x =
(↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
simp only [RightHandedWeyl.rep_toMatrix, DualRightHandedWeyl.rep_toMatrix] e_f.e_f v:RightHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2x1:Fin 2⊢ (↑M).map star i x1 * (↑M)⁻¹ᴴ j x * rightDualRightToMatrix v x1 x =
(↑M).map star i x1 * rightDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
ring All goals completed! 🐙
The group action of SL(2,ℂ) on dualRightHanded ⊗ rightHanded is equivalent to
((M.1⁻¹).conjTranspose * rightDualRightToMatrix v * ((M.1.map star)).ᵀ.
set_option backward.isDefEq.respectTransparency false in
lemma dualRightRightToMatrix_ρ (v : (DualRightHandedWeyl ⊗[ℂ] RightHandedWeyl)) (M : SL(2,ℂ)) :
dualRightRightToMatrix (TensorProduct.map (DualRightHandedWeyl.rep M)
(RightHandedWeyl.rep M) v) =
((M.1⁻¹).conjTranspose) * dualRightRightToMatrix v * (M.1.map star)ᵀ := by v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ dualRightRightToMatrix ((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ
nth_rewrite 1 [dualRightRightToMatrix] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ ((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ
simp only [LinearEquiv.trans_apply] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr (v)))) v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v))v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ
· v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) apply congrArg v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ ⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
rw [h1 v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ ⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
⇑((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ
funext i j v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualRightHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v))
i j =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis)
(DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis)
(RightHandedWeyl.rep M)) (i, j) k)
* dualRightRightToMatrix v k.1 k.2) = _ v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) k *
dualRightRightToMatrix v k.1 k.2 =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i j
rw [Fintype.sum_prod_type v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
dualRightRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i j v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
dualRightRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i j] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
dualRightRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i j
simp_rw [ v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, x_1) *
dualRightRightToMatrix v x x_1 =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i jkroneckerMap_apply, v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
((↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ) i j Matrix.mul_apply, v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * ((↑M).map star)ᵀ x j Matrix.transpose_apply v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2,
(↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (M.1.map star) j x
= ∑ x : Fin 2, ∑ x1 : Fin 2, ((↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) *
(M.1.map star) j x := by v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ dualRightRightToMatrix ((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix v * ((↑M).map star)ᵀ v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x
congr e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x) = fun x =>
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x
funext x e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x
rw [Finset.sum_mul e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M)⁻¹ᴴ i i_1 * dualRightRightToMatrix v i_1 x * (↑M).map star j x =
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᴴ i j * dualRightRightToMatrix v j x) * (↑M).map star j x
rw [h1 v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
dualRightRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
rw [Finset.sum_comm v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
dualRightRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
dualRightRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x] v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
dualRightRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
congr e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
dualRightRightToMatrix v x y) =
fun x => ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
funext x e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
dualRightRightToMatrix v x_1 x =
∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
congr e_f.e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
dualRightRightToMatrix v x_1 x) =
fun x1 => (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
funext x1 e_f.e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
dualRightRightToMatrix v x1 x =
(↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
simp only [DualRightHandedWeyl.rep_toMatrix, RightHandedWeyl.rep_toMatrix] e_f.e_f v:DualRightHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x) * (↑M).map star j x =
∑ x, ∑ x1, (↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j xx:Fin 2x1:Fin 2⊢ (↑M)⁻¹ᴴ i x1 * (↑M).map star j x * dualRightRightToMatrix v x1 x =
(↑M)⁻¹ᴴ i x1 * dualRightRightToMatrix v x1 x * (↑M).map star j x
ring All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma dualLeftDualRightToMatrix_ρ (v : (DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeyl))
(M : SL(2,ℂ)) :
dualLeftDualRightToMatrix (TensorProduct.map (DualLeftHandedWeyl.rep M)
(DualRightHandedWeyl.rep M) v) =
(M.1⁻¹)ᵀ * dualLeftDualRightToMatrix v * ((M.1⁻¹).conjTranspose)ᵀ := by v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ dualLeftDualRightToMatrix ((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
nth_rewrite 1 [dualLeftDualRightToMatrix] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ ((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
simp only [LinearEquiv.trans_apply] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr (v)))) v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v))v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
· v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) apply congrArg v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (DualLeftHandedWeyl.basis.tensorProduct
DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ ⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)
rw [h1 v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis)
(DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis))
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) *ᵥ
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v))⊢ ⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) =
⇑((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v)) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ
funext i j v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((DualLeftHandedWeyl.basis.tensorProduct DualRightHandedWeyl.basis).repr v))
i j =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis)
(DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis)
(DualRightHandedWeyl.rep M)) (i, j) k)
* dualLeftDualRightToMatrix v k.1 k.2) = _ v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
k *
dualLeftDualRightToMatrix v k.1 k.2 =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
rw [Fintype.sum_prod_type v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
dualLeftDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
dualLeftDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, y) *
dualLeftDualRightToMatrix v (x, y).1 (x, y).2 =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j
simp_rw [ v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M))
((LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M)) (i, j)
(x, x_1) *
dualLeftDualRightToMatrix v x x_1 =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i jkroneckerMap_apply, v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
((↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ) i j Matrix.mul_apply, v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ j, (↑M)⁻¹ᵀ i j * dualLeftDualRightToMatrix v j x) * (↑M)⁻¹ᴴᵀ x j Matrix.transpose_apply v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, (M.1)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) *
(M.1)⁻¹ᴴ j x = ∑ x : Fin 2, ∑ x1 : Fin 2,
((M.1)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (M.1)⁻¹ᴴ j x:= by v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)⊢ dualLeftDualRightToMatrix ((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) v) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix v * (↑M)⁻¹ᴴᵀ v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x
congr e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x) = fun x =>
∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x
funext x e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x
rw [Finset.sum_mul e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, (↑M)⁻¹ i_1 i * dualLeftDualRightToMatrix v i_1 x * (↑M)⁻¹ᴴ j x =
∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, (∑ x_1, (↑M)⁻¹ x_1 i * dualLeftDualRightToMatrix v x_1 x) * (↑M)⁻¹ᴴ j x
rw [h1 v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x_1 *
dualLeftDualRightToMatrix v x x_1 =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
rw [Finset.sum_comm v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualLeftDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualLeftDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x] v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualLeftDualRightToMatrix v x y =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
congr e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j y *
dualLeftDualRightToMatrix v x y) =
fun x => ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
funext x e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
dualLeftDualRightToMatrix v x_1 x =
∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
congr e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
dualLeftDualRightToMatrix v x_1 x) =
fun x1 => (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
funext x1 e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix DualLeftHandedWeyl.basis DualLeftHandedWeyl.basis) (DualLeftHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix DualRightHandedWeyl.basis DualRightHandedWeyl.basis) (DualRightHandedWeyl.rep M) j x *
dualLeftDualRightToMatrix v x1 x =
(↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
simp only [DualLeftHandedWeyl.rep_toMatrix, transpose_apply, DualRightHandedWeyl.rep_toMatrix] e_f.e_f v:DualLeftHandedWeyl ⊗[ℂ] DualRightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x) * (↑M)⁻¹ᴴ j x =
∑ x, ∑ x1, (↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j xx:Fin 2x1:Fin 2⊢ (↑M)⁻¹ x1 i * (↑M)⁻¹ᴴ j x * dualLeftDualRightToMatrix v x1 x =
(↑M)⁻¹ x1 i * dualLeftDualRightToMatrix v x1 x * (↑M)⁻¹ᴴ j x
ring All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma leftRightToMatrix_ρ (v : (LeftHandedWeyl ⊗[ℂ] RightHandedWeyl)) (M : SL(2,ℂ)) :
leftRightToMatrix (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M) v) =
M.1 * leftRightToMatrix v * (M.1)ᴴ := by v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
↑M * leftRightToMatrix v * (↑M)ᴴ
nth_rewrite 1 [leftRightToMatrix] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ ((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
↑M * leftRightToMatrix v * (↑M)ᴴ
simp only [LinearEquiv.trans_apply] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
↑M * leftRightToMatrix v * (↑M)ᴴ
trans (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2)) ((LinearMap.toMatrix
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis) (LeftHandedWeyl.basis.tensorProduct
RightHandedWeyl.basis)
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr (v)))) v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v))v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
↑M * leftRightToMatrix v * (↑M)ᴴ
· v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
((LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) apply congrArg v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (LeftHandedWeyl.basis.tensorProduct
RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
simp only [coe_linearEquivFunOnFinite] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ ⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)
rw [h1 v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)h1:(LinearMap.toMatrix (LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis)
(LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis))
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) *ᵥ
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v) =
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v))⊢ ⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) =
⇑((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr
((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v)) All goals completed! 🐙] All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
↑M * leftRightToMatrix v * (↑M)ᴴ v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
↑M * leftRightToMatrix v * (↑M)ᴴ] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v)) =
↑M * leftRightToMatrix v * (↑M)ᴴ
funext i j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (LinearEquiv.curry ℂ ℂ (Fin 2) (Fin 2))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ (Fin 2 × Fin 2))
((LeftHandedWeyl.basis.tensorProduct RightHandedWeyl.basis).repr v))
i j =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis)
(RightHandedWeyl.rep M)) (i, j) k)
* leftRightToMatrix v k.1 k.2) = _ v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) k *
leftRightToMatrix v k.1 k.2 =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i j
rw [Fintype.sum_prod_type v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
leftRightToMatrix v (x, y).1 (x, y).2 =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
leftRightToMatrix v (x, y).1 (x, y).2 =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i j] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, y) *
leftRightToMatrix v (x, y).1 (x, y).2 =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i j
simp_rw [ v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M))
((LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M)) (i, j) (x, x_1) *
leftRightToMatrix v x x_1 =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i jkroneckerMap_apply, v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
(↑M * leftRightToMatrix v * (↑M)ᴴ) i j Matrix.mul_apply v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j]
have h1 : ∑ x : Fin 2, (∑ x1 : Fin 2, M.1 i x1 * leftRightToMatrix v x1 x) * (M.1)ᴴ x j
= ∑ x : Fin 2, ∑ x1 : Fin 2, (M.1 i x1 * leftRightToMatrix v x1 x) * (M.1)ᴴ x j := by v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)⊢ leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) v) =
↑M * leftRightToMatrix v * (↑M)ᴴ v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j
congr e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2⊢ (fun x => (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j) = fun x =>
∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j
funext x e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j
rw [Finset.sum_mul e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2x:Fin 2⊢ ∑ i_1, ↑M i i_1 * leftRightToMatrix v i_1 x * (↑M)ᴴ x j = ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, (∑ j, ↑M i j * leftRightToMatrix v j x) * (↑M)ᴴ x j
rw [h1 v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x_1 *
leftRightToMatrix v x x_1 =
∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
rw [Finset.sum_comm v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
leftRightToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
leftRightToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j] v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
leftRightToMatrix v x y =
∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
congr e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j⊢ (fun y =>
∑ x,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j y *
leftRightToMatrix v x y) =
fun x => ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
funext x e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2⊢ ∑ x_1,
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
leftRightToMatrix v x_1 x =
∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
congr e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2⊢ (fun x_1 =>
(LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x_1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
leftRightToMatrix v x_1 x) =
fun x1 => ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
funext x1 e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2x1:Fin 2⊢ (LinearMap.toMatrix LeftHandedWeyl.basis LeftHandedWeyl.basis) (LeftHandedWeyl.rep M) i x1 *
(LinearMap.toMatrix RightHandedWeyl.basis RightHandedWeyl.basis) (RightHandedWeyl.rep M) j x *
leftRightToMatrix v x1 x =
↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
simp only [LeftHandedWeyl.rep_toMatrix, RightHandedWeyl.rep_toMatrix] e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M).map star j x * leftRightToMatrix v x1 x = ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x j
rw [Matrix.conjTranspose e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M).map star j x * leftRightToMatrix v x1 x = ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᵀ.map star x j e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M).map star j x * leftRightToMatrix v x1 x = ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᵀ.map star x j]e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2x1:Fin 2⊢ ↑M i x1 * (↑M).map star j x * leftRightToMatrix v x1 x = ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᵀ.map star x j
simp only [RCLike.star_def, map_apply, transpose_apply] e_f.e_f v:LeftHandedWeyl ⊗[ℂ] RightHandedWeylM:SL(2, ℂ)i:Fin 2j:Fin 2h1:∑ x, (∑ x1, ↑M i x1 * leftRightToMatrix v x1 x) * (↑M)ᴴ x j = ∑ x, ∑ x1, ↑M i x1 * leftRightToMatrix v x1 x * (↑M)ᴴ x jx:Fin 2x1:Fin 2⊢ ↑M i x1 * (starRingEnd ℂ) (↑M j x) * leftRightToMatrix v x1 x =
↑M i x1 * leftRightToMatrix v x1 x * (starRingEnd ℂ) (↑M j x)
ring All goals completed! 🐙The symm version of the group actions.
lemma leftLeftToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M) (leftLeftToMatrix.symm v) =
leftLeftToMatrix.symm (M.1 * v * (M.1)ᵀ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v) =
leftLeftToMatrix.symm (↑M * v * (↑M)ᵀ)
have h1 := leftLeftToMatrix_ρ (leftLeftToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v)) =
↑M * leftLeftToMatrix (leftLeftToMatrix.symm v) * (↑M)ᵀ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v) =
leftLeftToMatrix.symm (↑M * v * (↑M)ᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v)) =
↑M * v * (↑M)ᵀ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v) =
leftLeftToMatrix.symm (↑M * v * (↑M)ᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v)) =
↑M * v * (↑M)ᵀ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v) =
leftLeftToMatrix.symm
(leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftLeftToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v)) =
↑M * v * (↑M)ᵀ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v) =
(TensorProduct.map (LeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (leftLeftToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma dualLeftdualLeftToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)
(dualLeftdualLeftToMatrix.symm v) =
dualLeftdualLeftToMatrix.symm ((M.1⁻¹)ᵀ * v * (M.1⁻¹)) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v) =
dualLeftdualLeftToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹)
have h1 := dualLeftdualLeftToMatrix_ρ (dualLeftdualLeftToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftdualLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * dualLeftdualLeftToMatrix (dualLeftdualLeftToMatrix.symm v) * (↑M)⁻¹⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v) =
dualLeftdualLeftToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftdualLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)⁻¹⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v) =
dualLeftdualLeftToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftdualLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)⁻¹⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v) =
dualLeftdualLeftToMatrix.symm
(dualLeftdualLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftdualLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)⁻¹⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v) =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (dualLeftdualLeftToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma leftDualLeftToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)
(leftDualLeftToMatrix.symm v) =
leftDualLeftToMatrix.symm (M.1 * v * (M.1⁻¹)) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v) =
leftDualLeftToMatrix.symm (↑M * v * (↑M)⁻¹)
have h1 := leftDualLeftToMatrix_ρ (leftDualLeftToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftDualLeftToMatrix
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v)) =
↑M * leftDualLeftToMatrix (leftDualLeftToMatrix.symm v) * (↑M)⁻¹⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v) =
leftDualLeftToMatrix.symm (↑M * v * (↑M)⁻¹)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftDualLeftToMatrix
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v)) =
↑M * v * (↑M)⁻¹⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v) =
leftDualLeftToMatrix.symm (↑M * v * (↑M)⁻¹)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftDualLeftToMatrix
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v)) =
↑M * v * (↑M)⁻¹⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v) =
leftDualLeftToMatrix.symm
(leftDualLeftToMatrix
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftDualLeftToMatrix
((TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v)) =
↑M * v * (↑M)⁻¹⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v) =
(TensorProduct.map (LeftHandedWeyl.rep M) (DualLeftHandedWeyl.rep M)) (leftDualLeftToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma dualLeftLeftToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)
(dualLeftLeftToMatrix.symm v) =
dualLeftLeftToMatrix.symm ((M.1⁻¹)ᵀ * v * (M.1)ᵀ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v) =
dualLeftLeftToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)ᵀ)
have h1 := dualLeftLeftToMatrix_ρ (dualLeftLeftToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * dualLeftLeftToMatrix (dualLeftLeftToMatrix.symm v) * (↑M)ᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v) =
dualLeftLeftToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)ᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)ᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v) =
dualLeftLeftToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)ᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)ᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v) =
dualLeftLeftToMatrix.symm
(dualLeftLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftLeftToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)ᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v) =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (LeftHandedWeyl.rep M)) (dualLeftLeftToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma rightRightToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M) (rightRightToMatrix.symm v) =
rightRightToMatrix.symm ((M.1.map star) * v * ((M.1.map star))ᵀ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v) =
rightRightToMatrix.symm ((↑M).map star * v * ((↑M).map star)ᵀ)
have h1 := rightRightToMatrix_ρ (rightRightToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v)) =
(↑M).map star * rightRightToMatrix (rightRightToMatrix.symm v) * ((↑M).map star)ᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v) =
rightRightToMatrix.symm ((↑M).map star * v * ((↑M).map star)ᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v)) =
(↑M).map star * v * ((↑M).map star)ᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v) =
rightRightToMatrix.symm ((↑M).map star * v * ((↑M).map star)ᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v)) =
(↑M).map star * v * ((↑M).map star)ᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v) =
rightRightToMatrix.symm
(rightRightToMatrix
((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightRightToMatrix ((TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v)) =
(↑M).map star * v * ((↑M).map star)ᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v) =
(TensorProduct.map (RightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (rightRightToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma dualRightDualRightToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)
(dualRightDualRightToMatrix.symm v) =
dualRightDualRightToMatrix.symm (((M.1⁻¹).conjTranspose) * v * ((M.1⁻¹).conjTranspose)ᵀ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v) =
dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * v * (↑M)⁻¹ᴴᵀ)
have h1 := dualRightDualRightToMatrix_ρ (dualRightDualRightToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightDualRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * dualRightDualRightToMatrix (dualRightDualRightToMatrix.symm v) * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v) =
dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * v * (↑M)⁻¹ᴴᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightDualRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v) =
dualRightDualRightToMatrix.symm ((↑M)⁻¹ᴴ * v * (↑M)⁻¹ᴴᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightDualRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v) =
dualRightDualRightToMatrix.symm
(dualRightDualRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightDualRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualRightDualRightToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma rightDualRightToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)
(rightDualRightToMatrix.symm v) =
rightDualRightToMatrix.symm ((M.1.map star) * v * (((M.1⁻¹).conjTranspose)ᵀ)) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v) =
rightDualRightToMatrix.symm ((↑M).map star * v * (↑M)⁻¹ᴴᵀ)
have h1 := rightDualRightToMatrix_ρ (rightDualRightToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightDualRightToMatrix
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v)) =
(↑M).map star * rightDualRightToMatrix (rightDualRightToMatrix.symm v) * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v) =
rightDualRightToMatrix.symm ((↑M).map star * v * (↑M)⁻¹ᴴᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightDualRightToMatrix
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v)) =
(↑M).map star * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v) =
rightDualRightToMatrix.symm ((↑M).map star * v * (↑M)⁻¹ᴴᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightDualRightToMatrix
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v)) =
(↑M).map star * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v) =
rightDualRightToMatrix.symm
(rightDualRightToMatrix
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:rightDualRightToMatrix
((TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v)) =
(↑M).map star * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v) =
(TensorProduct.map (RightHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (rightDualRightToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma dualRightRightToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)
(dualRightRightToMatrix.symm v) =
dualRightRightToMatrix.symm (((M.1⁻¹).conjTranspose) * v * (M.1.map star)ᵀ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v) =
dualRightRightToMatrix.symm ((↑M)⁻¹ᴴ * v * ((↑M).map star)ᵀ)
have h1 := dualRightRightToMatrix_ρ (dualRightRightToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * dualRightRightToMatrix (dualRightRightToMatrix.symm v) * ((↑M).map star)ᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v) =
dualRightRightToMatrix.symm ((↑M)⁻¹ᴴ * v * ((↑M).map star)ᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * v * ((↑M).map star)ᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v) =
dualRightRightToMatrix.symm ((↑M)⁻¹ᴴ * v * ((↑M).map star)ᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * v * ((↑M).map star)ᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v) =
dualRightRightToMatrix.symm
(dualRightRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualRightRightToMatrix
((TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v)) =
(↑M)⁻¹ᴴ * v * ((↑M).map star)ᵀ⊢ (TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v) =
(TensorProduct.map (DualRightHandedWeyl.rep M) (RightHandedWeyl.rep M)) (dualRightRightToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma dualLeftDualRightToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)
(dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm ((M.1⁻¹)ᵀ * v * ((M.1⁻¹).conjTranspose)ᵀ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ)
have h1 := dualLeftDualRightToMatrix_ρ (dualLeftDualRightToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftDualRightToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v)) =
(↑M)⁻¹ᵀ * dualLeftDualRightToMatrix (dualLeftDualRightToMatrix.symm v) * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftDualRightToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftDualRightToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm
(dualLeftDualRightToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:dualLeftDualRightToMatrix
((TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v)) =
(↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) =
(TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma leftRightToMatrix_ρ_symm (v : Matrix (Fin 2) (Fin 2) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm (M.1 * v * (M.1)ᴴ) := by v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm (↑M * v * (↑M)ᴴ)
have h1 := leftRightToMatrix_ρ (leftRightToMatrix.symm v) M v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v)) =
↑M * leftRightToMatrix (leftRightToMatrix.symm v) * (↑M)ᴴ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm (↑M * v * (↑M)ᴴ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v)) =
↑M * v * (↑M)ᴴ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm (↑M * v * (↑M)ᴴ)
rw [← h1, v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v)) =
↑M * v * (↑M)ᴴ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm
(leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 2) (Fin 2) ℂM:SL(2, ℂ)h1:leftRightToMatrix ((TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v)) =
↑M * v * (↑M)ᴴ⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) =
(TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma dualLeftDualRightToMatrix_ρ_symm_selfAdjoint (v : Matrix (Fin 2) (Fin 2) ℂ)
(hv : IsSelfAdjoint v) (M : SL(2,ℂ)) :
TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)
(dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm (SL2C.toSelfAdjointMap (M.transpose⁻¹) ⟨v, hv⟩) := by v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (TensorProduct.map (DualLeftHandedWeyl.rep M) (DualRightHandedWeyl.rep M)) (dualLeftDualRightToMatrix.symm v) =
dualLeftDualRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M.transpose⁻¹) ⟨v, hv⟩)
rw [dualLeftDualRightToMatrix_ρ_symm v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ dualLeftDualRightToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ) =
dualLeftDualRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M.transpose⁻¹) ⟨v, hv⟩) v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ dualLeftDualRightToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ) =
dualLeftDualRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M.transpose⁻¹) ⟨v, hv⟩)] v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ dualLeftDualRightToMatrix.symm ((↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ) =
dualLeftDualRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M.transpose⁻¹) ⟨v, hv⟩)
apply congrArg v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ = ↑((SL2C.toSelfAdjointMap M.transpose⁻¹) ⟨v, hv⟩)
simp only [SL2C.toSelfAdjointMap_apply_coe, SpecialLinearGroup.coe_inv,
SpecialLinearGroup.coe_transpose] v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)⁻¹ᵀ * v * (↑M)⁻¹ᴴᵀ = (↑M)ᵀ.adjugate * v * (↑M)ᵀ.adjugateᴴ
congr 1 e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)⁻¹ᵀ * v = (↑M)ᵀ.adjugate * ve_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)⁻¹ᴴᵀ = (↑M)ᵀ.adjugateᴴ
· e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)⁻¹ᵀ * v = (↑M)ᵀ.adjugate * v rw [SL2C.inverse_coe e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M⁻¹)ᵀ * v = (↑M)ᵀ.adjugate * v e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M⁻¹)ᵀ * v = (↑M)ᵀ.adjugate * v]e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M⁻¹)ᵀ * v = (↑M)ᵀ.adjugate * v
simp only [SpecialLinearGroup.coe_inv] e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M).adjugateᵀ * v = (↑M)ᵀ.adjugate * v
rw [@adjugate_transpose e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)ᵀ.adjugate * v = (↑M)ᵀ.adjugate * v All goals completed! 🐙] All goals completed! 🐙
· e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M)⁻¹ᴴᵀ = (↑M)ᵀ.adjugateᴴ rw [SL2C.inverse_coe e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M⁻¹)ᴴᵀ = (↑M)ᵀ.adjugateᴴ e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M⁻¹)ᴴᵀ = (↑M)ᵀ.adjugateᴴ]e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M⁻¹)ᴴᵀ = (↑M)ᵀ.adjugateᴴ
simp only [SpecialLinearGroup.coe_inv] e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M).adjugateᴴᵀ = (↑M)ᵀ.adjugateᴴ
rw [← @adjugate_transpose e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M).adjugateᴴᵀ = (↑M).adjugateᵀᴴ e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M).adjugateᴴᵀ = (↑M).adjugateᵀᴴ]e_a v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (↑M).adjugateᴴᵀ = (↑M).adjugateᵀᴴ
rfl All goals completed! 🐙
lemma leftRightToMatrix_ρ_symm_selfAdjoint (v : Matrix (Fin 2) (Fin 2) ℂ)
(hv : IsSelfAdjoint v) (M : SL(2,ℂ)) :
TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm (SL2C.toSelfAdjointMap M ⟨v, hv⟩) := by v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ (TensorProduct.map (LeftHandedWeyl.rep M) (RightHandedWeyl.rep M)) (leftRightToMatrix.symm v) =
leftRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M) ⟨v, hv⟩)
rw [leftRightToMatrix_ρ_symm v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ leftRightToMatrix.symm (↑M * v * (↑M)ᴴ) = leftRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M) ⟨v, hv⟩) v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ leftRightToMatrix.symm (↑M * v * (↑M)ᴴ) = leftRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M) ⟨v, hv⟩)] v:ℂ²ˣ²hv:IsSelfAdjoint vM:SL(2, ℂ)⊢ leftRightToMatrix.symm (↑M * v * (↑M)ᴴ) = leftRightToMatrix.symm ↑((SL2C.toSelfAdjointMap M) ⟨v, hv⟩)
rfl All goals completed! 🐙