PhysLean/HepLean/Tensors/ComplexLorentz/ContrNatTransform.lean
2024-10-11 15:47:35 +00:00

123 lines
4.9 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/-
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
-/
import HepLean.Tensors.OverColor.Basic
import HepLean.Tensors.OverColor.Functors
import HepLean.Tensors.COmplexLorentz.ColorFun
import HepLean.Mathematics.PiTensorProduct
/-!
## The contraction monoidal natural transformation
-/
namespace Fermion
noncomputable section
open Matrix
open MatrixGroups
open Complex
open TensorProduct
open IndexNotation
open CategoryTheory
open MonoidalCategory
def tensorateContrPair (c : OverColor Color) : (OverColor.contrPair Color τ ⊗⋙ colorFunMon).obj c ≅
(colorFunMon.obj c) ⊗ colorFunMon.obj ((OverColor.map τ).obj c) :=
(colorFunMon.μIso c ((OverColor.map τ).obj c)).symm
namespace pairwiseRepFun
def obj' (c : OverColor Color) : Rep SL(2, ) := Rep.of {
toFun := fun M => PiTensorProduct.map (fun x =>
TensorProduct.map ((colorToRep (c.hom x)).ρ M) ((colorToRep (τ (c.hom x))).ρ M)),
map_one' := by
simp
map_mul' := fun x y => by
simp only [Functor.id_obj, _root_.map_mul]
ext x' : 2
simp only [LinearMap.compMultilinearMap_apply, PiTensorProduct.map_tprod, LinearMap.mul_apply]
apply congrArg
funext i
change _ = (TensorProduct.map _ _ ∘ₗ TensorProduct.map _ _ ) (x' i)
rw [← TensorProduct.map_comp]
rfl}
/-- Given a morphism in `OverColor Color` the corresopnding linear equivalence between `obj' _`
induced by reindexing. -/
def mapToLinearEquiv' {f g : OverColor Color} (m : f ⟶ g) : (obj' f).V ≃ₗ[] (obj' g).V :=
(PiTensorProduct.reindex (fun x => (colorToRep (f.hom x)).V ⊗[] (colorToRep (τ (f.hom x))).V)
(OverColor.Hom.toEquiv m)).trans
(PiTensorProduct.congr (fun i =>
TensorProduct.congr (colorToRepCongr (OverColor.Hom.toEquiv_symm_apply m i))
((colorToRepCongr (congrArg τ (OverColor.Hom.toEquiv_symm_apply m i))))))
lemma mapToLinearEquiv'_tprod {f g : OverColor Color} (m : f ⟶ g)
(x : (i : f.left) → (colorToRep (f.hom i)).V ⊗[] (colorToRep (τ (f.hom i))).V) :
mapToLinearEquiv' m (PiTensorProduct.tprod x) =
PiTensorProduct.tprod fun i =>
(TensorProduct.congr (colorToRepCongr (OverColor.Hom.toEquiv_symm_apply m i ))
(colorToRepCongr (mapToLinearEquiv'.proof_4 m i ))) (x ((OverColor.Hom.toEquiv m).symm i)) := by
simp [mapToLinearEquiv']
change (PiTensorProduct.congr fun i => TensorProduct.congr (colorToRepCongr _) (colorToRepCongr _))
((PiTensorProduct.reindex (fun x => ↑(colorToRep (f.hom x)).V ⊗[] ↑(colorToRep (τ (f.hom x))).V)
(OverColor.Hom.toEquiv m))
((PiTensorProduct.tprod ) x)) = _
rw [PiTensorProduct.reindex_tprod]
erw [PiTensorProduct.congr_tprod]
rfl
end pairwiseRepFun
def pairwiseRep (c : OverColor Color) : Rep SL(2, ) := Rep.of {
toFun := fun M => PiTensorProduct.map (fun x =>
TensorProduct.map ((colorToRep (c.hom x)).ρ M) ((colorToRep (τ (c.hom x))).ρ M )),
map_one' := by
simp
map_mul' := fun x y => by
simp only [Functor.id_obj, _root_.map_mul]
ext x' : 2
simp only [LinearMap.compMultilinearMap_apply, PiTensorProduct.map_tprod, LinearMap.mul_apply]
apply congrArg
funext i
change _ = (TensorProduct.map _ _ ∘ₗ TensorProduct.map _ _ ) (x' i)
rw [← TensorProduct.map_comp]
rfl}
def contrPairPairwiseRep (c : OverColor Color) :
(colorFunMon.obj c) ⊗ colorFunMon.obj ((OverColor.map τ).obj c) ⟶
pairwiseRep c where
hom := TensorProduct.lift (PiTensorProduct.map₂ (fun x =>
TensorProduct.mk (colorToRep (c.hom x)).V (colorToRep (τ (c.hom x))).V))
comm M := by
refine HepLean.PiTensorProduct.induction_tmul (fun x y => ?_)
simp only [Functor.id_obj, CategoryStruct.comp, Action.instMonoidalCategory_tensorObj_V,
Equivalence.symm_inverse, Action.functorCategoryEquivalence_functor,
Action.FunctorCategoryEquivalence.functor_obj_obj, Action.tensor_ρ', LinearMap.coe_comp,
Function.comp_apply]
change (TensorProduct.lift
(PiTensorProduct.map₂ fun x => TensorProduct.mk ↑(colorToRep (c.hom x)).V ↑(colorToRep (τ (c.hom x))).V))
((TensorProduct.map _ _)
((PiTensorProduct.tprod ) x ⊗ₜ[] (PiTensorProduct.tprod ) y)) = _
rw [TensorProduct.map_tmul]
erw [colorFun.obj_ρ_tprod, colorFun.obj_ρ_tprod]
simp only [Functor.id_obj, lift.tmul]
erw [PiTensorProduct.map₂_tprod_tprod]
change _ = ((pairwiseRep c).ρ M)
((TensorProduct.lift
(PiTensorProduct.map₂ fun x => TensorProduct.mk ↑(colorToRep (c.hom x)).V ↑(colorToRep (τ (c.hom x))).V))
((PiTensorProduct.tprod ) x ⊗ₜ[] (PiTensorProduct.tprod ) y))
simp only [mk_apply, Functor.id_obj, lift.tmul]
rw [PiTensorProduct.map₂_tprod_tprod]
simp only [pairwiseRep, Functor.id_obj, Rep.coe_of, Rep.of_ρ, MonoidHom.coe_mk, OneHom.coe_mk,
mk_apply]
erw [PiTensorProduct.map_tprod]
rfl
end
end Fermion