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.Tensors.ComplexTensor.Vector.Pre.BasicTensor products of two complex Lorentz vectors
@[expose] public section
Equivalence of complexContr ⊗ complexContr to 4 x 4 complex matrices.
def contrContrToMatrix : (ContrℂModule ⊗[ℂ] ContrℂModule) ≃ₗ[ℂ]
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
(Basis.tensorProduct complexContrBasis complexContrBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
Expanding contrContrToMatrix in terms of the standard basis.
M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexContrBasis.tensorProduct complexContrBasis) (x, y) =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexContrBasis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂi:Fin 1 ⊕ Fin 3x✝¹:i ∈ Finset.univj:Fin 1 ⊕ Fin 3x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(i, j) •
(complexContrBasis.tensorProduct complexContrBasis) (i, j) =
M i j • complexContrBasis i ⊗ₜ[ℂ] complexContrBasis j
exact congrArg _ (Basis.tensorProduct_apply complexContrBasis complexContrBasis i j) All goals completed! 🐙
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of complexCo ⊗ complexCo to 4 x 4 complex matrices.
def coCoToMatrix : (CoℂModule ⊗[ℂ] CoℂModule) ≃ₗ[ℂ]
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
(Basis.tensorProduct complexCoBasis complexCoBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
Expanding coCoToMatrix in terms of the standard basis.
lemma coCoToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
coCoToMatrix.symm M = ∑ i, ∑ j, M i j • (complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j) := by M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ coCoToMatrix.symm M = ∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j
simp only [coCoToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply, Basis.repr_symm_apply] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(complexCoBasis.tensorProduct complexCoBasis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M)) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j rw [Fintype.sum_prod_type M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexCoBasis.tensorProduct complexCoBasis) (x, y) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexCoBasis.tensorProduct complexCoBasis) (x, y) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexCoBasis.tensorProduct complexCoBasis) (x, y) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂi:Fin 1 ⊕ Fin 3x✝¹:i ∈ Finset.univj:Fin 1 ⊕ Fin 3x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(i, j) •
(complexCoBasis.tensorProduct complexCoBasis) (i, j) =
M i j • complexCoBasis i ⊗ₜ[ℂ] complexCoBasis j
exact congrArg _ (Basis.tensorProduct_apply complexCoBasis complexCoBasis i j) All goals completed! 🐙
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of complexContr ⊗ complexCo to 4 x 4 complex matrices.
def contrCoToMatrix : (ContrℂModule ⊗[ℂ] CoℂModule) ≃ₗ[ℂ]
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
(Basis.tensorProduct complexContrBasis complexCoBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
Expansion of contrCoToMatrix in terms of the standard basis.
lemma contrCoToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
contrCoToMatrix.symm M = ∑ i, ∑ j, M i j • (complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j) := by M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ contrCoToMatrix.symm M = ∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j
simp only [contrCoToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(complexContrBasis.tensorProduct complexCoBasis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M)) =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexContrBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexContrBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexContrBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexContrBasis.tensorProduct complexCoBasis) i =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j rw [Fintype.sum_prod_type M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexContrBasis.tensorProduct complexCoBasis) (x, y) =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexContrBasis.tensorProduct complexCoBasis) (x, y) =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexContrBasis.tensorProduct complexCoBasis) (x, y) =
∑ i, ∑ j, M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂi:Fin 1 ⊕ Fin 3x✝¹:i ∈ Finset.univj:Fin 1 ⊕ Fin 3x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(i, j) •
(complexContrBasis.tensorProduct complexCoBasis) (i, j) =
M i j • complexContrBasis i ⊗ₜ[ℂ] complexCoBasis j
exact congrArg _ (Basis.tensorProduct_apply complexContrBasis complexCoBasis i j) All goals completed! 🐙
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙
Equivalence of complexCo ⊗ complexContr to 4 x 4 complex matrices.
def coContrToMatrix : (CoℂModule ⊗[ℂ] ContrℂModule) ≃ₗ[ℂ]
Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ :=
(Basis.tensorProduct complexCoBasis complexContrBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)
Expansion of coContrToMatrix in terms of the standard basis.
lemma coContrToMatrix_symm_expand_tmul (M : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) :
coContrToMatrix.symm M = ∑ i, ∑ j, M i j • (complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j) := by M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ coContrToMatrix.symm M = ∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j
simp only [coContrToMatrix, LinearEquiv.trans_symm, LinearEquiv.trans_apply,
Basis.repr_symm_apply] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearCombination ℂ ⇑(complexCoBasis.tensorProduct complexContrBasis))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M)) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j
rw [Finsupp.linearCombination_apply_of_mem_supported ℂ (s := Finset.univ) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexContrBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexContrBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexContrBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis jM:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ i,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
i •
(complexCoBasis.tensorProduct complexContrBasis) i =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j rw [Fintype.sum_prod_type M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexCoBasis.tensorProduct complexContrBasis) (x, y) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexCoBasis.tensorProduct complexContrBasis) (x, y) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j] M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ ∑ x,
∑ y,
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(x, y) •
(complexCoBasis.tensorProduct complexContrBasis) (x, y) =
∑ i, ∑ j, M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j
refine Finset.sum_congr rfl (fun i _ => Finset.sum_congr rfl (fun j _ => ?_)) M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂi:Fin 1 ⊕ Fin 3x✝¹:i ∈ Finset.univj:Fin 1 ⊕ Fin 3x✝:j ∈ Finset.univ⊢ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M))
(i, j) •
(complexCoBasis.tensorProduct complexContrBasis) (i, j) =
M i j • complexCoBasis i ⊗ₜ[ℂ] complexContrBasis j
exact congrArg _ (Basis.tensorProduct_apply complexCoBasis complexContrBasis i j) All goals completed! 🐙
· M:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3))).symm
((LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)).symm M) ∈
Finsupp.supported ℂ ℂ ↑Finset.univ simp All goals completed! 🐙Group actions
set_option backward.isDefEq.respectTransparency false in
lemma contrContrToMatrix_ρ (v : (ContrℂModule ⊗[ℂ] ContrℂModule)) (M : SL(2,ℂ)) :
contrContrToMatrix (TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ := by v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ contrContrToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
nth_rewrite 1 [contrContrToMatrix] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ ((complexContrBasis.tensorProduct complexContrBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
simp only [LinearEquiv.trans_apply] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
(complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis)
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v))) v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v))v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
· v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)) apply congrArg v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis)
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
⇑((complexContrBasis.tensorProduct complexContrBasis).repr v) =
⇑((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)
erw [h1 v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
⇑((complexContrBasis.tensorProduct complexContrBasis).repr v) =
⇑((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
⇑((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexContrBasis.tensorProduct complexContrBasis)
(complexContrBasis.tensorProduct complexContrBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
⇑((complexContrBasis.tensorProduct complexContrBasis).repr v) =
⇑((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
⇑((complexContrBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))
rfl All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
funext i j v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexContrBasis).repr v))
i j =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis)
(ContrℂModule.SL2CRep M)) (i, j) k)
* contrContrToMatrix v k.1 k.2) = _ v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) k *
contrContrToMatrix v k.1 k.2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j
rw [Fintype.sum_prod_type v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, y) *
contrContrToMatrix v (x, y).1 (x, y).2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, y) *
contrContrToMatrix v (x, y).1 (x, y).2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, y) *
contrContrToMatrix v (x, y).1 (x, y).2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j
simp_rw [ v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, x_1) *
contrContrToMatrix v x x_1 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i jkroneckerMap_apply, v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j Matrix.mul_apply, v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ x j Matrix.transpose_apply v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x]
have h1 : ∑ x, (∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 *
contrContrToMatrix v x1 x) * LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
= ∑ x, ∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1
* contrContrToMatrix v x1 x) * LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x := by v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ contrContrToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
congr e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (fun x =>
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x) =
fun x =>
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
funext x e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ (∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
rw [Finset.sum_mul e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ ∑ i_1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i i_1 * contrContrToMatrix v i_1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrContrToMatrix v j x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
erw [h1 v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
contrContrToMatrix v x x_1 =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
rw [Finset.sum_comm v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
contrContrToMatrix v x y =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
contrContrToMatrix v x y =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x] v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
contrContrToMatrix v x y =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
congr e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
contrContrToMatrix v x y) =
fun x =>
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
funext x e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3⊢ ∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x *
contrContrToMatrix v x_1 x =
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
congr e_f.e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3⊢ (fun x_1 =>
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x *
contrContrToMatrix v x_1 x) =
fun x1 =>
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
funext x1 e_f.e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ (LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x1 *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x *
contrContrToMatrix v x1 x =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
simp only [complexContrBasis_ρ_apply] e_f.e_f v:ContrℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x *
contrContrToMatrix v x1 x =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
ring All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma coCoToMatrix_ρ (v : (CoℂModule ⊗[ℂ] CoℂModule)) (M : SL(2,ℂ)) :
coCoToMatrix (TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ := by v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
nth_rewrite 1 [coCoToMatrix] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ ((complexCoBasis.tensorProduct complexCoBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
simp only [LinearEquiv.trans_apply] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
(complexCoBasis.tensorProduct complexCoBasis)
(complexCoBasis.tensorProduct complexCoBasis)
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)))) v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v))v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
· v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)) apply congrArg v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (complexCoBasis.tensorProduct complexCoBasis)
(complexCoBasis.tensorProduct complexCoBasis)
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
⇑((complexCoBasis.tensorProduct complexCoBasis).repr v) =
⇑((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)
erw [h1 v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
⇑((complexCoBasis.tensorProduct complexCoBasis).repr v) =
⇑((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
⇑((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexCoBasis.tensorProduct complexCoBasis) (complexCoBasis.tensorProduct complexCoBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
⇑((complexCoBasis.tensorProduct complexCoBasis).repr v) =
⇑((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
⇑((complexCoBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))
rfl All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
funext i j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexCoBasis).repr v))
i j =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) k)
* coCoToMatrix v k.1 k.2) = _ v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) k *
coCoToMatrix v k.1 k.2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j
rw [Fintype.sum_prod_type v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, y) *
coCoToMatrix v (x, y).1 (x, y).2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, y) *
coCoToMatrix v (x, y).1 (x, y).2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, y) *
coCoToMatrix v (x, y).1 (x, y).2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j
simp_rw [ v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, x_1) *
coCoToMatrix v x x_1 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i jkroneckerMap_apply, v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j Matrix.mul_apply, v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ j, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ i j * coCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j Matrix.transpose_apply v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j]
have h1 : ∑ x, (∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i *
coCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
= ∑ x, ∑ x1, ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i
* coCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j := by v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
congr e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (fun x =>
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j) =
fun x =>
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
funext x e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ (∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
rw [Finset.sum_mul e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ ∑ i_1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ i_1 i * coCoToMatrix v i_1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coCoToMatrix v x_1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
erw [h1 v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
coCoToMatrix v x x_1 =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
rw [Finset.sum_comm v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
coCoToMatrix v x y =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
coCoToMatrix v x y =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j] v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
coCoToMatrix v x y =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
congr e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ (fun y =>
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
coCoToMatrix v x y) =
fun x =>
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
funext x e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3⊢ ∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x *
coCoToMatrix v x_1 x =
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
congr e_f.e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3⊢ (fun x_1 =>
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x *
coCoToMatrix v x_1 x) =
fun x1 =>
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
funext x1 e_f.e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ (LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x1 *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x *
coCoToMatrix v x1 x =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
simp only [complexCoBasis_ρ_apply, transpose_apply] e_f.e_f v:CoℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j *
coCoToMatrix v x1 x =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
ring All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma contrCoToMatrix_ρ (v : (ContrℂModule ⊗[ℂ] CoℂModule)) (M : SL(2,ℂ)) :
contrCoToMatrix (TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ := by v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
nth_rewrite 1 [contrCoToMatrix] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ ((complexContrBasis.tensorProduct complexCoBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
simp only [LinearEquiv.trans_apply] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
(complexContrBasis.tensorProduct complexCoBasis)
(complexContrBasis.tensorProduct complexCoBasis)
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)))) v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis)
(complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v))v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis)
(complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
· v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis)
(complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)) apply congrArg v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis) (complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (complexContrBasis.tensorProduct complexCoBasis)
(complexContrBasis.tensorProduct complexCoBasis)
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis) (complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
⇑((complexContrBasis.tensorProduct complexCoBasis).repr v) =
⇑((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis) (complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)
erw [h1 v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis) (complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
⇑((complexContrBasis.tensorProduct complexCoBasis).repr v) =
⇑((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
⇑((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexContrBasis.tensorProduct complexCoBasis) (complexContrBasis.tensorProduct complexCoBasis))
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) *ᵥ
⇑((complexContrBasis.tensorProduct complexCoBasis).repr v) =
⇑((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v)) =
⇑((complexContrBasis.tensorProduct complexCoBasis).repr
((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v))
rfl All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹
funext i j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexContrBasis.tensorProduct complexCoBasis).repr v))
i j =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) k)
* contrCoToMatrix v k.1 k.2) = _ v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) k *
contrCoToMatrix v k.1 k.2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j
rw [Fintype.sum_prod_type v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, y) *
contrCoToMatrix v (x, y).1 (x, y).2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, y) *
contrCoToMatrix v (x, y).1 (x, y).2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, y) *
contrCoToMatrix v (x, y).1 (x, y).2 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j
simp_rw [ v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M))
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M)) (i, j) (x, x_1) *
contrCoToMatrix v x x_1 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i jkroneckerMap_apply, v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
i j Matrix.mul_apply v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j]
have h1 : ∑ x, (∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 *
contrCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
= ∑ x, ∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1
* contrCoToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j := by v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)⊢ contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) v) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
congr e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (fun x =>
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j) =
fun x =>
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
funext x e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ (∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
rw [Finset.sum_mul e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ ∑ i_1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i i_1 * contrCoToMatrix v i_1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
(∑ j, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i j * contrCoToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
erw [h1 v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x_1 *
contrCoToMatrix v x x_1 =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
rw [Finset.sum_comm v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
contrCoToMatrix v x y =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
contrCoToMatrix v x y =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j] v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
contrCoToMatrix v x y =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
congr e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j⊢ (fun y =>
∑ x,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j y *
contrCoToMatrix v x y) =
fun x =>
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
funext x e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3⊢ ∑ x_1,
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x *
contrCoToMatrix v x_1 x =
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
congr e_f.e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3⊢ (fun x_1 =>
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x *
contrCoToMatrix v x_1 x) =
fun x1 =>
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
funext x1 e_f.e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ (LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) i x1 *
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) j x *
contrCoToMatrix v x1 x =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
simp only [complexContrBasis_ρ_apply, complexCoBasis_ρ_apply, transpose_apply] e_f.e_f v:ContrℂModule ⊗[ℂ] CoℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j =
∑ x,
∑ x1,
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x jx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j *
contrCoToMatrix v x1 x =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) i x1 * contrCoToMatrix v x1 x *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x j
ring All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma coContrToMatrix_ρ (v : (CoℂModule ⊗[ℂ] ContrℂModule)) (M : SL(2,ℂ)) :
coContrToMatrix (TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ := by v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
nth_rewrite 1 [coContrToMatrix] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ ((complexCoBasis.tensorProduct complexContrBasis).repr ≪≫ₗ
Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)) ≪≫ₗ
LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
simp only [LinearEquiv.trans_apply] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
trans (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3)) ((LinearMap.toMatrix
(complexCoBasis.tensorProduct complexContrBasis)
(complexCoBasis.tensorProduct complexContrBasis)
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M))
*ᵥ ((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)))) v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis)
(complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v))v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis)
(complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
· v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))) =
(LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
((LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis)
(complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)) apply congrArg v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis) (complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)
have h1 := (LinearMap.toMatrix_mulVec_repr (complexCoBasis.tensorProduct complexContrBasis)
(complexCoBasis.tensorProduct complexContrBasis)
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis) (complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
⇑((complexCoBasis.tensorProduct complexContrBasis).repr v) =
⇑((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
(LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis) (complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)
erw [h1 v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis) (complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
⇑((complexCoBasis.tensorProduct complexContrBasis).repr v) =
⇑((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
⇑((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)h1:(LinearMap.toMatrix (complexCoBasis.tensorProduct complexContrBasis) (complexCoBasis.tensorProduct complexContrBasis))
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) *ᵥ
⇑((complexCoBasis.tensorProduct complexContrBasis).repr v) =
⇑((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))⊢ (Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v)) =
⇑((complexCoBasis.tensorProduct complexContrBasis).repr
((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v))
rfl All goals completed! 🐙
rw [TensorProduct.toMatrix_map v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ
funext i j v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (LinearEquiv.curry ℂ ℂ (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3))
(kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) *ᵥ
(Finsupp.linearEquivFunOnFinite ℂ ℂ ((Fin 1 ⊕ Fin 3) × (Fin 1 ⊕ Fin 3)))
((complexCoBasis.tensorProduct complexContrBasis).repr v))
i j =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j
change ∑ k, ((kroneckerMap (fun x1 x2 => x1 * x2)
((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis)
(ContrℂModule.SL2CRep M)) (i, j) k)
* coContrToMatrix v k.1 k.2) = _ v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ k,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) k *
coContrToMatrix v k.1 k.2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j
rw [Fintype.sum_prod_type v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, y) *
coContrToMatrix v (x, y).1 (x, y).2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, y) *
coContrToMatrix v (x, y).1 (x, y).2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ y,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, y) *
coContrToMatrix v (x, y).1 (x, y).2 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j
simp_rw [ v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
kroneckerMap (fun x1 x2 => x1 * x2) ((LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M))
((LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M)) (i, j) (x, x_1) *
coContrToMatrix v x x_1 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i jkroneckerMap_apply, v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
i j Matrix.mul_apply, v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ j, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ i j * coContrToMatrix v j x) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ x j Matrix.transpose_apply v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x]
have h1 : ∑ x, (∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i *
coContrToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) j x
= ∑ x, ∑ x1, ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i
* coContrToMatrix v x1 x) * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) j x := by v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)⊢ coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) v) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
congr e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3⊢ (fun x =>
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x) =
fun x =>
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
funext x e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ (∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
rw [Finset.sum_mul e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3x:Fin 1 ⊕ Fin 3⊢ ∑ i_1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ i_1 i * coContrToMatrix v i_1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
(∑ x_1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x_1 i * coContrToMatrix v x_1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
erw [h1 v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ x,
∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x_1 *
coContrToMatrix v x x_1 =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
rw [Finset.sum_comm v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
coContrToMatrix v x y =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
coContrToMatrix v x y =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x] v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ ∑ y,
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
coContrToMatrix v x y =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
congr e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x⊢ (fun y =>
∑ x,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j y *
coContrToMatrix v x y) =
fun x =>
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
funext x e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3⊢ ∑ x_1,
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x *
coContrToMatrix v x_1 x =
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
congr e_f.e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3⊢ (fun x_1 =>
(LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x_1 *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x *
coContrToMatrix v x_1 x) =
fun x1 =>
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
funext x1 e_f.e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ (LinearMap.toMatrix complexCoBasis complexCoBasis) (CoℂModule.SL2CRep M) i x1 *
(LinearMap.toMatrix complexContrBasis complexContrBasis) (ContrℂModule.SL2CRep M) j x *
coContrToMatrix v x1 x =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
simp only [complexCoBasis_ρ_apply, complexContrBasis_ρ_apply, transpose_apply] e_f.e_f v:CoℂModule ⊗[ℂ] ContrℂModuleM:SL(2, ℂ)i:Fin 1 ⊕ Fin 3j:Fin 1 ⊕ Fin 3h1:∑ x,
(∑ x1, (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x) *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x =
∑ x,
∑ x1,
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j xx:Fin 1 ⊕ Fin 3x1:Fin 1 ⊕ Fin 3⊢ (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x *
coContrToMatrix v x1 x =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ x1 i * coContrToMatrix v x1 x *
LorentzGroup.toComplex (SL2C.toLorentzGroup M) j x
ring All goals completed! 🐙The symm version of the group actions.
lemma contrContrToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)
(contrContrToMatrix.symm v) =
contrContrToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ) := by v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v) =
contrContrToMatrix.symm
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
have h1 := contrContrToMatrix_ρ (contrContrToMatrix.symm v) M v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrContrToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrContrToMatrix (contrContrToMatrix.symm v) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v) =
contrContrToMatrix.symm
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrContrToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v) =
contrContrToMatrix.symm
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
rw [← h1, v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrContrToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v) =
contrContrToMatrix.symm
(contrContrToMatrix
((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrContrToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v) =
(TensorProduct.map (ContrℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (contrContrToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma coCoToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M) (coCoToMatrix.symm v) =
coCoToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹) := by v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v) =
coCoToMatrix.symm
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
have h1 := coCoToMatrix_ρ (coCoToMatrix.symm v) M v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coCoToMatrix (coCoToMatrix.symm v) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v) =
coCoToMatrix.symm
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v) =
coCoToMatrix.symm
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
rw [← h1, v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v) =
coCoToMatrix.symm
(coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coCoToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v) =
(TensorProduct.map (CoℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (coCoToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma contrCoToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M) (contrCoToMatrix.symm v) =
contrCoToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M)) * v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹) := by v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v) =
contrCoToMatrix.symm
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
have h1 := contrCoToMatrix_ρ (contrCoToMatrix.symm v) M v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * contrCoToMatrix (contrCoToMatrix.symm v) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v) =
contrCoToMatrix.symm
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v) =
contrCoToMatrix.symm
(LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹)
rw [← h1, v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v) =
contrCoToMatrix.symm
(contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:contrCoToMatrix ((TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v)) =
LorentzGroup.toComplex (SL2C.toLorentzGroup M) * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹⊢ (TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v) =
(TensorProduct.map (ContrℂModule.SL2CRep M) (CoℂModule.SL2CRep M)) (contrCoToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙
lemma coContrToMatrix_ρ_symm (v : Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂ) (M : SL(2,ℂ)) :
TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M) (coContrToMatrix.symm v) =
coContrToMatrix.symm ((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ) := by v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v) =
coContrToMatrix.symm
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
have h1 := coContrToMatrix_ρ (coContrToMatrix.symm v) M v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * coContrToMatrix (coContrToMatrix.symm v) *
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v) =
coContrToMatrix.symm
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
simp only [LinearEquiv.apply_symm_apply] at h1 v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v) =
coContrToMatrix.symm
((LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ)
rw [← h1, v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v) =
coContrToMatrix.symm
(coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v))) All goals completed! 🐙 LinearEquiv.symm_apply_apply v:Matrix (Fin 1 ⊕ Fin 3) (Fin 1 ⊕ Fin 3) ℂM:SL(2, ℂ)h1:coContrToMatrix ((TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v)) =
(LorentzGroup.toComplex (SL2C.toLorentzGroup M))⁻¹ᵀ * v * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))ᵀ⊢ (TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v) =
(TensorProduct.map (CoℂModule.SL2CRep M) (ContrℂModule.SL2CRep M)) (coContrToMatrix.symm v) All goals completed! 🐙] All goals completed! 🐙