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.Units.Pre

Metric for complex Lorentz vectors

@[expose] public section

The metric ηᵃᵃ as an element of (complexContr ⊗ complexContr).V.

def contrMetricVal : (ContrℂModule ⊗[] ContrℂModule) := contrContrToMatrix.symm ((@minkowskiMatrix 3).map ofRealHom)

The expansion of contrMetricVal into basis vectors.

set_option backward.isDefEq.respectTransparency false in1 complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + (0 complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + 0 complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) + 0 complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) + (0 complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + ((-1) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + 0 complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) + 0 complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) + (0 complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0) + (0 complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0) + (-1) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + 0 complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2))) + (0 complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0) + (0 complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0) + 0 complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1) + (-1) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)))) = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + (-1 complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + -1 complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + -1 complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) All goals completed! 🐙

The metric ηᵃᵃ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ complexContr ⊗ complexContr, making its invariance under the action of SL(2,ℂ).

M:SL(2, )x:contrContrToMatrix.symm (minkowskiMatrix.map ofRealHom) = contrContrToMatrix.symm (LorentzGroup.toComplex (SL2C.toLorentzGroup M) * minkowskiMatrix.map ofRealHom * (LorentzGroup.toComplex (SL2C.toLorentzGroup M))) M:SL(2, )x:minkowskiMatrix.map ofRealHom = LorentzGroup.toComplex (SL2C.toLorentzGroup M) * minkowskiMatrix.map ofRealHom * (LorentzGroup.toComplex (SL2C.toLorentzGroup M)) All goals completed! 🐙
lemma contrMetric_apply_one : contrMetric (1 : ) = contrMetricVal := contrMetric 1 = contrMetricVal 1 contrMetricVal = contrMetricVal All goals completed! 🐙

The metric ηᵢᵢ as an element of (complexCo ⊗ complexCo).V.

def coMetricVal : (CoℂModule ⊗[] CoℂModule) := coCoToMatrix.symm ((@minkowskiMatrix 3).map ofRealHom)

The expansion of coMetricVal into basis vectors.

set_option backward.isDefEq.respectTransparency false in1 complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + (0 complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + 0 complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) + 0 complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) + (0 complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + ((-1) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + 0 complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) + 0 complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) + (0 complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0) + (0 complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0) + (-1) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + 0 complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2))) + (0 complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0) + (0 complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0) + 0 complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1) + (-1) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)))) = complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + (-1 complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + -1 complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + -1 complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) = complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) All goals completed! 🐙

The metric ηᵢᵢ as a morphism 𝟙_ (Rep ℂ SL(2,ℂ)) ⟶ complexCo ⊗ complexCo, making its invariance under the action of SL(2,ℂ).

M:SL(2, )x:minkowskiMatrix.map ofRealHom = (LorentzGroup.toComplex (SL2C.toLorentzGroup M)⁻¹) * minkowskiMatrix.map ofRealHom * LorentzGroup.toComplex (SL2C.toLorentzGroup M)⁻¹ All goals completed! 🐙
lemma coMetric_apply_one : coMetric (1 : ) = coMetricVal := coMetric 1 = coMetricVal 1 coMetricVal = coMetricVal All goals completed! 🐙

Contraction of metrics

(TensorProduct.comm ContrℂModule CoℂModule) ((LinearEquiv.lTensor ContrℂModule (TensorProduct.lid CoℂModule)) ((LinearMap.lTensor ContrℂModule (LinearMap.rTensor CoℂModule contrCoContraction.toLinearMap)) ((LinearMap.lTensor ContrℂModule (TensorProduct.assoc ContrℂModule CoℂModule CoℂModule).symm) ((TensorProduct.assoc ContrℂModule ContrℂModule (CoℂModule ⊗[] CoℂModule)) ((complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) ⊗ₜ[] (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2))))))) = coContrUnit 1 contrCoContraction (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2) - (contrCoContraction (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - (contrCoContraction (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - (contrCoContraction (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) = coContrUnit 1 contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2) - (contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - (contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - (contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) = coContrUnit.toLinearMap 1 repeat erw [(if Sum.inl 0 = Sum.inl 0 then 1 else 0) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0)) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2) - (contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0)) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - (contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1)) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - (contrCoContraction.toLinearMap (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1) - contrCoContraction.toLinearMap (complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) = coContrUnit.toLinearMap 1(if Sum.inl 0 = Sum.inl 0 then 1 else 0) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inl 0 then 1 else 0) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inl 0 then 1 else 0) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inl 0 then 1 else 0) complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2) - ((if Sum.inl 0 = Sum.inr 0 then 1 else 0) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inr 0 then 1 else 0) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inr 0 then 1 else 0) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inr 0 then 1 else 0) complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - ((if Sum.inl 0 = Sum.inr 1 then 1 else 0) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inr 1 then 1 else 0) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inr 1 then 1 else 0) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inr 1 then 1 else 0) complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) - ((if Sum.inl 0 = Sum.inr 2 then 1 else 0) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inr 2 then 1 else 0) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inr 2 then 1 else 0) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inr 2 then 1 else 0) complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) = coContrUnit.toLinearMap 1 complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) = coContrUnit.toLinearMap 1 erw [complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) = coContrUnitVal complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2) = complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) + complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) + complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) + complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)All goals completed! 🐙(TensorProduct.comm CoℂModule ContrℂModule) ((LinearEquiv.lTensor CoℂModule (TensorProduct.lid ContrℂModule)) ((LinearMap.lTensor CoℂModule (LinearMap.rTensor ContrℂModule coContrContraction.toLinearMap)) ((LinearMap.lTensor CoℂModule (TensorProduct.assoc CoℂModule ContrℂModule ContrℂModule).symm) ((TensorProduct.assoc CoℂModule CoℂModule (ContrℂModule ⊗[] ContrℂModule)) ((complexCoBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - complexCoBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - complexCoBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - complexCoBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) ⊗ₜ[] (complexContrBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0) - complexContrBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0) - complexContrBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1) - complexContrBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2))))))) = contrCoUnit 1 coContrContraction (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2) - (coContrContraction (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - (coContrContraction (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - (coContrContraction (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) = contrCoUnit 1 coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2) - (coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - (coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - (coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) = contrCoUnit.toLinearMap 1 repeat erw [(if Sum.inl 0 = Sum.inl 0 then 1 else 0) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inl 0)) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2) - (coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 0)) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - (coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 1)) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - (coContrContraction.toLinearMap (complexCoBasis (Sum.inl 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 0) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 1) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1) - coContrContraction.toLinearMap (complexCoBasis (Sum.inr 2) ⊗ₜ[] complexContrBasis (Sum.inr 2)) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) = contrCoUnit.toLinearMap 1(if Sum.inl 0 = Sum.inl 0 then 1 else 0) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inl 0 then 1 else 0) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inl 0 then 1 else 0) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inl 0 then 1 else 0) complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inr 2) - ((if Sum.inl 0 = Sum.inr 0 then 1 else 0) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inr 0 then 1 else 0) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inr 0 then 1 else 0) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inr 0 then 1 else 0) complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - ((if Sum.inl 0 = Sum.inr 1 then 1 else 0) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inr 1 then 1 else 0) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inr 1 then 1 else 0) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inr 1 then 1 else 0) complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 2)) - ((if Sum.inl 0 = Sum.inr 2 then 1 else 0) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inl 0) - (if Sum.inr 0 = Sum.inr 2 then 1 else 0) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 0) - (if Sum.inr 1 = Sum.inr 2 then 1 else 0) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 1) - (if Sum.inr 2 = Sum.inr 2 then 1 else 0) complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)) = contrCoUnit.toLinearMap 1 complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) = contrCoUnit 1 erw [complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) = contrCoUnitVal complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2) = complexContrBasis (Sum.inl 0) ⊗ₜ[] complexCoBasis (Sum.inl 0) + complexContrBasis (Sum.inr 0) ⊗ₜ[] complexCoBasis (Sum.inr 0) + complexContrBasis (Sum.inr 1) ⊗ₜ[] complexCoBasis (Sum.inr 1) + complexContrBasis (Sum.inr 2) ⊗ₜ[] complexCoBasis (Sum.inr 2)All goals completed! 🐙