Imports
/-
Copyright (c) 2025 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.ConstructorsThe unit tensors
@[expose] public sectionattribute [-simp] LinearEquiv.cast_applylemma unitTensor_congr {c c1 : C} (h : c = c1) :
unitTensor c = permT id (k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cc1:Ch:c = c1⊢ IsReindexing ![S.τ c1, c1] ![S.τ c, c] id All goals completed! 🐙) (unitTensor (S := S) c1) := k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cc1:Ch:c = c1⊢ unitTensor c = (permT id ⋯) (unitTensor c1)
k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ unitTensor c = (permT id ⋯) (unitTensor c)
All goals completed! 🐙The unit tensor is symmetric on dualing the color.
tmul.h.h k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]⊢ (Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x))).toTensor = (Pure.permP ![1, 0] ⋯ (x.prodP p)).toTensor
congr 1 tmul.h.h k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]⊢ Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x)) = Pure.permP ![1, 0] ⋯ (x.prodP p)
ext i tmul.h.h k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]i:Fin 2⊢ Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x)) i = Pure.permP ![1, 0] ⋯ (x.prodP p) i
fin_cases i tmul.h.h.«0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]⊢ Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x)) ((fun i => i) ⟨0, ⋯⟩) =
Pure.permP ![1, 0] ⋯ (x.prodP p) ((fun i => i) ⟨0, ⋯⟩)tmul.h.h.«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]⊢ Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x)) ((fun i => i) ⟨1, ⋯⟩) =
Pure.permP ![1, 0] ⋯ (x.prodP p) ((fun i => i) ⟨1, ⋯⟩)
· tmul.h.h.«0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]⊢ Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x)) ((fun i => i) ⟨0, ⋯⟩) =
Pure.permP ![1, 0] ⋯ (x.prodP p) ((fun i => i) ⟨0, ⋯⟩) rfl All goals completed! 🐙
· tmul.h.h.«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]x:Tensor.Pure S ![S.τ (S.τ c)]⊢ Pure.permP id ⋯ (p.prodP (Pure.permP id ⋯ x)) ((fun i => i) ⟨1, ⋯⟩) =
Pure.permP ![1, 0] ⋯ (x.prodP p) ((fun i => i) ⟨1, ⋯⟩) rfl All goals completed! 🐙
· tmul.h.hsmul k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]r:kt:S.Tensor ![S.τ (S.τ c)]a✝:(permT id ⋯) ((prodT p.toTensor) ((permT id ⋯) t)) = (permT ![1, 0] ⋯) ((prodT t) p.toTensor)⊢ (permT id ⋯) ((prodT p.toTensor) ((permT id ⋯) (r • t))) = (permT ![1, 0] ⋯) ((prodT (r • t)) p.toTensor) simp_all All goals completed! 🐙
· tmul.h.hadd k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V (S.τ (S.τ c))y:V (S.τ c)p:Tensor.Pure S ![S.τ c]t1✝:S.Tensor ![S.τ (S.τ c)]t2✝:S.Tensor ![S.τ (S.τ c)]a✝¹:(permT id ⋯) ((prodT p.toTensor) ((permT id ⋯) t1✝)) = (permT ![1, 0] ⋯) ((prodT t1✝) p.toTensor)a✝:(permT id ⋯) ((prodT p.toTensor) ((permT id ⋯) t2✝)) = (permT ![1, 0] ⋯) ((prodT t2✝) p.toTensor)⊢ (permT id ⋯) ((prodT p.toTensor) ((permT id ⋯) (t1✝ + t2✝))) = (permT ![1, 0] ⋯) ((prodT (t1✝ + t2✝)) p.toTensor) simp_all All goals completed! 🐙
· tmul.hsmul k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)x:S.Tensor ![S.τ (S.τ c)]r✝:kt✝:S.Tensor ![S.τ c]a✝:(permT id ⋯) ((prodT t✝) ((permT id ⋯) x)) = (permT ![1, 0] ⋯) ((prodT x) t✝)⊢ (permT id ⋯) ((prodT (r✝ • t✝)) ((permT id ⋯) x)) = (permT ![1, 0] ⋯) ((prodT x) (r✝ • t✝)) simp_all All goals completed! 🐙
· tmul.hadd k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:V (S.τ (S.τ c))y:V (S.τ c)x:S.Tensor ![S.τ (S.τ c)]t1✝:S.Tensor ![S.τ c]t2✝:S.Tensor ![S.τ c]a✝¹:(permT id ⋯) ((prodT t1✝) ((permT id ⋯) x)) = (permT ![1, 0] ⋯) ((prodT x) t1✝)a✝:(permT id ⋯) ((prodT t2✝) ((permT id ⋯) x)) = (permT ![1, 0] ⋯) ((prodT x) t2✝)⊢ (permT id ⋯) ((prodT (t1✝ + t2✝)) ((permT id ⋯) x)) = (permT ![1, 0] ⋯) ((prodT x) (t1✝ + t2✝)) simp_all All goals completed! 🐙
· add k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx✝:TensorProduct k (V (S.τ (S.τ c))) (V (S.τ c))y✝:TensorProduct k (V (S.τ (S.τ c))) (V (S.τ c))a✝¹:(permT id ⋯)
((TensorProduct.lift prodT)
((TensorProduct.map ↑fromSingleT ↑((LinearEquiv.cast ⋯).trans fromSingleT))
((TensorProduct.comm k (V (S.τ (S.τ c))) (V (S.τ c))) x✝))) =
(permT ![1, 0] ⋯) ((TensorProduct.lift prodT) ((TensorProduct.map ↑fromSingleT ↑fromSingleT) x✝))a✝:(permT id ⋯)
((TensorProduct.lift prodT)
((TensorProduct.map ↑fromSingleT ↑((LinearEquiv.cast ⋯).trans fromSingleT))
((TensorProduct.comm k (V (S.τ (S.τ c))) (V (S.τ c))) y✝))) =
(permT ![1, 0] ⋯) ((TensorProduct.lift prodT) ((TensorProduct.map ↑fromSingleT ↑fromSingleT) y✝))⊢ (permT id ⋯)
((TensorProduct.lift prodT)
((TensorProduct.map ↑fromSingleT ↑((LinearEquiv.cast ⋯).trans fromSingleT))
((TensorProduct.comm k (V (S.τ (S.τ c))) (V (S.τ c))) (x✝ + y✝)))) =
(permT ![1, 0] ⋯) ((TensorProduct.lift prodT) ((TensorProduct.map ↑fromSingleT ↑fromSingleT) (x✝ + y✝))) simp_all All goals completed! 🐙
lemma dual_unitTensor_eq_permT_unitTensor (c : C) :
S.unitTensor (S.τ c) = permT ![1, 0] (And.intro (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ Function.Bijective ![1, 0] decide All goals completed! 🐙) (fun i => by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Ci:Fin (Nat.succ 0).succ⊢ ![S.τ c, c] (![1, 0] i) = ![S.τ (S.τ c), S.τ c] i fin_cases i «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) = ![S.τ (S.τ c), S.τ c] ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) = ![S.τ (S.τ c), S.τ c] ((fun i => i) ⟨1, ⋯⟩) <;> «0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨0, ⋯⟩)) = ![S.τ (S.τ c), S.τ c] ((fun i => i) ⟨0, ⋯⟩)«1» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ ![S.τ c, c] (![1, 0] ((fun i => i) ⟨1, ⋯⟩)) = ![S.τ (S.τ c), S.τ c] ((fun i => i) ⟨1, ⋯⟩) simp All goals completed! 🐙))
(unitTensor c) := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ unitTensor (S.τ c) = (permT ![1, 0] ⋯) (unitTensor c)
rw [unitTensor_eq_permT_dual k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor (S.τ (S.τ c))) = (permT ![1, 0] ⋯) (unitTensor c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor (S.τ (S.τ c))) = (permT ![1, 0] ⋯) (unitTensor c)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor (S.τ (S.τ c))) = (permT ![1, 0] ⋯) (unitTensor c)
rw [unitTensor_congr (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ c = S.τ (S.τ c) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor (S.τ (S.τ c))) = (permT ![1, 0] ⋯) ((permT id ⋯) (unitTensor (S.τ (S.τ c)))) simp All goals completed! 🐙 k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor (S.τ (S.τ c))) = (permT ![1, 0] ⋯) ((permT id ⋯) (unitTensor (S.τ (S.τ c)))) : c = S.τ (S.τ c))] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:C⊢ (permT ![1, 0] ⋯) (unitTensor (S.τ (S.τ c))) = (permT ![1, 0] ⋯) ((permT id ⋯) (unitTensor (S.τ (S.τ c))))
simp All goals completed! 🐙lemma unit_fromSingleTContrFromPairT_eq_fromSingleT {c : C} (x : V c) :
fromSingleTContrFromPairT x ((S.unit c) (1 : k)) =
fromSingleT x := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ fromSingleTContrFromPairT x ((S.unit c) 1) = fromSingleT x
conv_rhs => rw [← S.contr_unit c x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c| fromSingleT
((TensorProduct.lid k (V c))
((LinearMap.rTensor (V c) (S.contr c).toLinearMap)
((TensorProduct.assoc k (V c) (V (S.τ c)) (V c)).symm (x ⊗ₜ[k] (S.unit c) 1))))
rfl All goals completed! 🐙
This lemma represents the de-categorification of S.contr_unit.
@[simp]
lemma contrT_single_unitTensor {c : C} (x : Tensor S ![c]) :
contrT 1 0 1 (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![c]⊢ 0 ≠ 1 ∧ S.τ (Fin.append ![c] ![S.τ c, c] 0) = Fin.append ![c] ![S.τ c, c] 1 simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![c]⊢ S.τ (Fin.append ![c] ![S.τ c, c] 0) = Fin.append ![c] ![S.τ c, c] 1; rfl All goals completed! 🐙) (prodT x (unitTensor c)) =
permT id (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![c]⊢ IsReindexing ![c] (Fin.append ![c] ![S.τ c, c] ∘ Fin.succSuccAbove 0 1) id simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![c]⊢ c = Fin.append ![c] ![S.τ c, c] (Fin.succSuccAbove 0 1 0); rfl All goals completed! 🐙) x := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![c]⊢ (contrT 1 0 1 ⋯) ((prodT x) (unitTensor c)) = (permT id ⋯) x
obtain ⟨x, rfl⟩ := fromSingleT.surjective x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (contrT 1 0 1 ⋯) ((prodT (fromSingleT x)) (unitTensor c)) = (permT id ⋯) (fromSingleT x)
rw [unitTensor, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (contrT 1 0 1 ⋯) ((prodT (fromSingleT x)) (fromConstPair (S.unit c))) = (permT id ⋯) (fromSingleT x) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (permT id ⋯) (fromSingleTContrFromPairT x ((S.unit c) 1)) = (permT id ⋯) (fromSingleT x) fromConstPair, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (contrT 1 0 1 ⋯) ((prodT (fromSingleT x)) (fromPairT ((S.unit c) 1))) = (permT id ⋯) (fromSingleT x) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (permT id ⋯) (fromSingleTContrFromPairT x ((S.unit c) 1)) = (permT id ⋯) (fromSingleT x) contrT_fromSingleT_fromPairT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (permT id ⋯) (fromSingleTContrFromPairT x ((S.unit c) 1)) = (permT id ⋯) (fromSingleT x) k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (permT id ⋯) (fromSingleTContrFromPairT x ((S.unit c) 1)) = (permT id ⋯) (fromSingleT x)] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ (permT id ⋯) (fromSingleTContrFromPairT x ((S.unit c) 1)) = (permT id ⋯) (fromSingleT x)
congr 1 e_6 k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ fromSingleTContrFromPairT x ((S.unit c) 1) = fromSingleT x
rw [← unit_fromSingleTContrFromPairT_eq_fromSingleT x e_6 k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:V c⊢ fromSingleTContrFromPairT x ((S.unit c) 1) = fromSingleTContrFromPairT x ((S.unit c) 1) All goals completed! 🐙] All goals completed! 🐙
set_option backward.isDefEq.respectTransparency false in
lemma contrT_unitTensor_dual_single {c : C} (x : Tensor S ![S.τ c]) :
contrT 1 1 2 (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ 1 ≠ 2 ∧ S.τ (Fin.append ![S.τ c, c] ![S.τ c] 1) = Fin.append ![S.τ c, c] ![S.τ c] 2 simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ S.τ (Fin.append ![S.τ c, c] ![S.τ c] 1) = Fin.append ![S.τ c, c] ![S.τ c] 2; rfl All goals completed! 🐙) (prodT (unitTensor c) x) =
permT id (by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ IsReindexing ![S.τ c] (Fin.append ![S.τ c, c] ![S.τ c] ∘ Fin.succSuccAbove 1 2) id simp k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ S.τ c = Fin.append ![S.τ c, c] ![S.τ c] (Fin.succSuccAbove 1 2 0); rfl All goals completed! 🐙) x := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯) ((prodT (unitTensor c)) x) = (permT id ⋯) x
rw [unitTensor_eq_permT_dual k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯) ((prodT ((permT ![1, 0] ⋯) (unitTensor (S.τ c)))) x) = (permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯) ((prodT ((permT ![1, 0] ⋯) (unitTensor (S.τ c)))) x) = (permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯) ((prodT ((permT ![1, 0] ⋯) (unitTensor (S.τ c)))) x) = (permT id ⋯) x
rw [prodT_permT_left k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯)
((permT (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ((prodT (unitTensor (S.τ c))) x)) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯)
((permT (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ((prodT (unitTensor (S.τ c))) x)) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (contrT 1 1 2 ⋯)
((permT (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ((prodT (unitTensor (S.τ c))) x)) =
(permT id ⋯) x
rw [contrT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((contrT 1 (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯)
((prodT (unitTensor (S.τ c))) x)) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((contrT 1 (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯)
((prodT (unitTensor (S.τ c))) x)) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((contrT 1 (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯)
((prodT (unitTensor (S.τ c))) x)) =
(permT id ⋯) x
rw [prodT_swap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((contrT 1 (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯)
((permT (Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯) ((prodT x) (unitTensor (S.τ c))))) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((contrT 1 (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯)
((permT (Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯) ((prodT x) (unitTensor (S.τ c))))) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((contrT 1 (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯)
((permT (Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯) ((prodT x) (unitTensor (S.τ c))))) =
(permT id ⋯) x
rw [contrT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯)
⋯)
((contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c))))) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯)
⋯)
((contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c))))) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT (Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯) ⋯)
((permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯)
⋯)
((contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c))))) =
(permT id ⋯) x
rw [permT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c)))) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c)))) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c)))) =
(permT id ⋯) x
conv_lhs =>
enter [2] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]| (contrT 1
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1))
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2))
⋯)
((prodT x) (unitTensor (S.τ c)))
change contrT 1 1 0 _ _ k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]| (contrT 1 1 0 ⋯) ((prodT x) (unitTensor (S.τ c)))
rw [contrT_symm] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]| (permT id ⋯) ((contrT 1 0 1 ⋯) ((prodT x) (unitTensor (S.τ c))))
rw [contrT_single_unitTensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((permT id ⋯) ((permT id ⋯) x)) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((permT id ⋯) ((permT id ⋯) x)) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((permT id ⋯) ((permT id ⋯) x)) =
(permT id ⋯) x
rw [permT_permT k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((permT (id ∘ id) ⋯) x) =
(permT id ⋯) x k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((permT (id ∘ id) ⋯) x) =
(permT id ⋯) x] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (permT
((Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
((permT (id ∘ id) ⋯) x) =
(permT id ⋯) x
conv_lhs =>
rw (transparency := .instances) [permT_permT] k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]| (permT
((id ∘ id) ∘
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
⋯)
x
apply permT_congr hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (id ∘ id) ∘
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ =
idhtensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ x = x
· hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ (id ∘ id) ∘
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯ =
id ext i hmap k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]i:Fin 1⊢ ↑(((id ∘ id) ∘
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
i) =
↑(id i)
fin_cases i hmap.«0» k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ ↑(((id ∘ id) ∘
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 1).funPredPredAbove
(Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ) 2) ⋯
(Fin.append (Fin.natAdd 1) (Fin.castAdd (Nat.succ 0).succ)) ⋯ ∘
Fin.funPredPredAbove 1 2 ⋯ (Fin.append (Fin.castAdd 1 ∘ ![1, 0]) (Fin.natAdd (Nat.succ 0).succ)) ⋯)
((fun i => i) ⟨0, ⋯⟩)) =
↑(id ((fun i => i) ⟨0, ⋯⟩))
rfl All goals completed! 🐙
· htensor k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cx:S.Tensor ![S.τ c]⊢ x = x rfl All goals completed! 🐙
@[simp]
lemma unitTensor_invariant {c : C} (g : G) :
g • S.unitTensor c = S.unitTensor c := by k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cg:G⊢ g • unitTensor c = unitTensor c
rw [unitTensor, k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cg:G⊢ g • fromConstPair (S.unit c) = fromConstPair (S.unit c) All goals completed! 🐙 actionT_fromConstPair k:Typeinst✝⁵:RCLike kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Module.Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bc:Cg:G⊢ fromConstPair (S.unit c) = fromConstPair (S.unit c) All goals completed! 🐙] All goals completed! 🐙