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.Product
public import Physlib.Relativity.Tensors.Contraction.Basis
public import Physlib.Meta.SorryEvaluation of tensor indices
@[expose] public section##Β The evaluation coefficient.
@[simp]
lemma evalPCoeff_update_self (i : Fin (n + 1)) [inst : DecidableEq (Fin (n + 1))]
(Ο : basisIdx (c i)) (p : Pure S c)
(x : V (c i)) :
evalPCoeff i Ο (p.update i x) = (b (c i)).repr x Ο := k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)inst:DecidableEq (Fin (n + 1))Ο:basisIdx (c i)p:Pure S cx:V (c i)β’ evalPCoeff i Ο (p.update i x) = ((b (c i)).repr x) Ο
All goals completed! π@[simp]
lemma evalPCoeff_update_succAbove (i : Fin (n + 1)) [inst : DecidableEq (Fin (n + 1))]
(j : Fin n)
(Ο : basisIdx (c i)) (p : Pure S c)
(x : V (c (i.succAbove j))) :
evalPCoeff i Ο (p.update (i.succAbove j) x) = evalPCoeff i Ο p := k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)inst:DecidableEq (Fin (n + 1))j:Fin nΟ:basisIdx (c i)p:Pure S cx:V (c (i.succAbove j))β’ evalPCoeff i Ο (p.update (i.succAbove j) x) = evalPCoeff i Ο p
All goals completed! πlemma evalPCoeff_basisVector (i : Fin (n + 1)) (Ο : basisIdx (c i)) (b' : ComponentIdx (S := S) c) :
evalPCoeff i Ο (Pure.basisVector c b') = if b' i = Ο then (1 : k) else 0 := k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)Ο:basisIdx (c i)b':ComponentIdx cβ’ evalPCoeff i Ο (basisVector c b') = if b' i = Ο then 1 else 0
All goals completed! πEvaluation for a pure tensor.
set_option backward.isDefEq.respectTransparency false in
@[simp]
lemma evalP_update_add [inst : DecidableEq (Fin (n + 1))] (i j : Fin (n + 1))
(Ο : basisIdx (c i)) (p : Pure S c)
(x y: V (c j)) :
evalP i Ο (p.update j (x + y)) =
evalP i Ο (p.update j x) + evalP i Ο (p.update j y) := k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)j:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cx:V (c j)y:V (c j)β’ evalP i Ο (p.update j (x + y)) = evalP i Ο (p.update j x) + evalP i Ο (p.update j y)
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)j:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cx:V (c j)y:V (c j)β’ evalPCoeff i Ο (p.update j (x + y)) β’ ((p.update j (x + y)).drop i).toTensor =
evalPCoeff i Ο (p.update j x) β’ ((p.update j x).drop i).toTensor +
evalPCoeff i Ο (p.update j y) β’ ((p.update j y).drop i).toTensor
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))j:Fin (n + 1)p:Pure S cx:V (c j)y:V (c j)Ο:basisIdx (c j)β’ evalPCoeff j Ο (p.update j (x + y)) β’ ((p.update j (x + y)).drop j).toTensor =
evalPCoeff j Ο (p.update j x) β’ ((p.update j x).drop j).toTensor +
evalPCoeff j Ο (p.update j y) β’ ((p.update j y).drop j).toTensork:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cj:Fin nx:V (c (i.succAbove j))y:V (c (i.succAbove j))β’ evalPCoeff i Ο (p.update (i.succAbove j) (x + y)) β’ ((p.update (i.succAbove j) (x + y)).drop i).toTensor =
evalPCoeff i Ο (p.update (i.succAbove j) x) β’ ((p.update (i.succAbove j) x).drop i).toTensor +
evalPCoeff i Ο (p.update (i.succAbove j) y) β’ ((p.update (i.succAbove j) y).drop i).toTensor
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))j:Fin (n + 1)p:Pure S cx:V (c j)y:V (c j)Ο:basisIdx (c j)β’ evalPCoeff j Ο (p.update j (x + y)) β’ ((p.update j (x + y)).drop j).toTensor =
evalPCoeff j Ο (p.update j x) β’ ((p.update j x).drop j).toTensor +
evalPCoeff j Ο (p.update j y) β’ ((p.update j y).drop j).toTensor All goals completed! π
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cj:Fin nx:V (c (i.succAbove j))y:V (c (i.succAbove j))β’ evalPCoeff i Ο (p.update (i.succAbove j) (x + y)) β’ ((p.update (i.succAbove j) (x + y)).drop i).toTensor =
evalPCoeff i Ο (p.update (i.succAbove j) x) β’ ((p.update (i.succAbove j) x).drop i).toTensor +
evalPCoeff i Ο (p.update (i.succAbove j) y) β’ ((p.update (i.succAbove j) y).drop i).toTensor All goals completed! πset_option backward.isDefEq.respectTransparency false in
@[simp]
lemma evalP_update_smul [inst : DecidableEq (Fin (n + 1))] (i j : Fin (n + 1))
(Ο : basisIdx (c i)) (p : Pure S c)
(r : k)
(x : V (c j)) :
evalP i Ο (p.update j (r β’ x)) =
r β’ evalP i Ο (p.update j x) := k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)j:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cr:kx:V (c j)β’ evalP i Ο (p.update j (r β’ x)) = r β’ evalP i Ο (p.update j x)
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)j:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cr:kx:V (c j)β’ evalPCoeff i Ο (p.update j (r β’ x)) β’ ((p.update j (r β’ x)).drop i).toTensor =
r β’ evalPCoeff i Ο (p.update j x) β’ ((p.update j x).drop i).toTensor
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))j:Fin (n + 1)p:Pure S cr:kx:V (c j)Ο:basisIdx (c j)β’ evalPCoeff j Ο (p.update j (r β’ x)) β’ ((p.update j (r β’ x)).drop j).toTensor =
r β’ evalPCoeff j Ο (p.update j x) β’ ((p.update j x).drop j).toTensork:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cr:kj:Fin nx:V (c (i.succAbove j))β’ evalPCoeff i Ο (p.update (i.succAbove j) (r β’ x)) β’ ((p.update (i.succAbove j) (r β’ x)).drop i).toTensor =
r β’ evalPCoeff i Ο (p.update (i.succAbove j) x) β’ ((p.update (i.succAbove j) x).drop i).toTensor
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))j:Fin (n + 1)p:Pure S cr:kx:V (c j)Ο:basisIdx (c j)β’ evalPCoeff j Ο (p.update j (r β’ x)) β’ ((p.update j (r β’ x)).drop j).toTensor =
r β’ evalPCoeff j Ο (p.update j x) β’ ((p.update j x).drop j).toTensor All goals completed! π
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cinst:DecidableEq (Fin (n + 1))i:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cr:kj:Fin nx:V (c (i.succAbove j))β’ evalPCoeff i Ο (p.update (i.succAbove j) (r β’ x)) β’ ((p.update (i.succAbove j) (r β’ x)).drop i).toTensor =
r β’ evalPCoeff i Ο (p.update (i.succAbove j) x) β’ ((p.update (i.succAbove j) x).drop i).toTensor All goals completed! πEvaluation for a pure tensor as multilinear map.
TODO "Choose a more descriptive name for `evalT` and `evalP`, taking into consideration
the namespaces they live in."@[simp]
lemma evalT_pure {n : β} {c : Fin (n + 1) β C} (i : Fin (n + 1))
(Ο : basisIdx (c i)) (p : Pure S c) :
evalT i Ο p.toTensor = Pure.evalP i Ο p := k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cβ’ (evalT i Ο) p.toTensor = Pure.evalP i Ο p
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cβ’ (PiTensorProduct.lift (Pure.evalPMultilinear i Ο)) ((PiTensorProduct.tprod k) p) = Pure.evalP i Ο p
k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)Ο:basisIdx (c i)p:Pure S cβ’ (PiTensorProduct.lift (Pure.evalPMultilinear i Ο)) ((PiTensorProduct.tprod k) p) = (Pure.evalPMultilinear i Ο) p
conv_rhs => k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ci:Fin (n + 1)Ο:basisIdx (c i)p:Pure S c| (PiTensorProduct.lift (Pure.evalPMultilinear i Ο)) ((PiTensorProduct.tprod k) p)lemma evalT_basis {n : β} {c : Fin (n + 1) β C} (i : Fin (n + 1))
(b : ComponentIdx c) (x : basisIdx (c i)) :
evalT i x (basis (S := S) c b) = if b i = x then basis (c β i.succAbove)
(fun j => b (i.succAbove j)) else 0 := k:Typeinstββ΅:CommRing 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 bβn:βc:Fin (n + 1) β Ci:Fin (n + 1)b:ComponentIdx cx:basisIdx (c i)β’ (evalT i x) ((basis c) b) = if b i = x then (basis (c β i.succAbove)) fun j => b (i.succAbove j) else 0
k:Typeinstββ΅:CommRing 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 bβn:βc:Fin (n + 1) β Ci:Fin (n + 1)b:ComponentIdx cx:basisIdx (c i)β’ (if b i = x then ((Pure.basisVector c b).drop i).toTensor else 0) =
if b i = x then (Pure.basisVector (c β i.succAbove) fun j => b (i.succAbove j)).toTensor else 0
All goals completed! πattribute [-simp] Matrix.cons_val_zero Matrix.cons_val Fin.succAbove_zeroTODO "Add lemmas related to the interaction of evalT and permT, prodT and contrT."The commutation of evaluation with permutations.
Commuting evaluation with permutations.
neg k:Typeinstββ΅:CommRing 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 bn:βm:βc:Fin (n + 1) β Cc':Fin (m + 1) β CΟ:Fin (n + 1) β Fin (m + 1)h:IsReindexing c' c Οi:Fin (n + 1)x:basisIdx (c i)b:ComponentIdx c'h1:Β¬(basisIdxCongr β―) (b (Ο i)) = xh1':b (Ο i) β (basisIdxCongr β―) xβ’ (if (basisIdxCongr β―) (b (Ο i)) = x then (basis (c β i.succAbove)) fun j => (basisIdxCongr β―) (b (Ο (i.succAbove j)))
else 0) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
(if b (Ο i) = (basisIdxCongr β―) x then (basis (c' β (Ο i).succAbove)) fun j => b ((Ο i).succAbove j) else 0)
simp [h1, h1'] All goals completed! π
Β· hzero k:Typeinstββ΅:CommRing 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 bn:βm:βc:Fin (n + 1) β Cc':Fin (m + 1) β CΟ:Fin (n + 1) β Fin (m + 1)h:IsReindexing c' c Οi:Fin (n + 1)x:basisIdx (c i)β’ (evalT i x) ((permT Ο h) 0) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
((evalT (Ο i) ((basisIdxCongr β―) x)) 0) simp All goals completed! π
Β· hsmul k:Typeinstββ΅:CommRing 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 bn:βm:βc:Fin (n + 1) β Cc':Fin (m + 1) β CΟ:Fin (n + 1) β Fin (m + 1)hβ:IsReindexing c' c Οi:Fin (n + 1)x:basisIdx (c i)a:kt:S.Tensor c'h:(evalT i x) ((permT Ο hβ) t) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
((evalT (Ο i) ((basisIdxCongr β―) x)) t)β’ (evalT i x) ((permT Ο hβ) (a β’ t)) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
((evalT (Ο i) ((basisIdxCongr β―) x)) (a β’ t)) simp only [map_smul, h] All goals completed! π
Β· hadd k:Typeinstββ΅:CommRing 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 bn:βm:βc:Fin (n + 1) β Cc':Fin (m + 1) β CΟ:Fin (n + 1) β Fin (m + 1)h:IsReindexing c' c Οi:Fin (n + 1)x:basisIdx (c i)t1:S.Tensor c't2:S.Tensor c'h1:(evalT i x) ((permT Ο h) t1) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
((evalT (Ο i) ((basisIdxCongr β―) x)) t1)h2:(evalT i x) ((permT Ο h) t2) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
((evalT (Ο i) ((basisIdxCongr β―) x)) t2)β’ (evalT i x) ((permT Ο h) (t1 + t2)) =
(permT (if hi : Ο i = 0 then fun j => (Ο (i.succAbove j)).pred β― else ((Ο i).pred hi).predAbove β Ο β i.succAbove) β―)
((evalT (Ο i) ((basisIdxCongr β―) x)) (t1 + t2)) simp only [map_add, h1, h2] All goals completed! πThe commutation of evaluation with evaluation.
TODO "Add the lemma corresponding the the commutation of two evaluations of tensor
indices."The commutation of evaluation with contraction.
Commuting evaluation with contraction. Evaluating index k and then contracting the
pair i j equals contracting the corresponding pair k.succAbove i, k.succAbove j and
then evaluating the residual index, up to the identity reindexing
IsReindexing.succAbove_succSuccAbove_comm.
lemma contrT_evalT {n : β} {c : Fin (n + 1 + 1 + 1) β C}
(k : Fin (n + 1 + 1 + 1)) (i j : Fin (n + 1 + 1)) (Ο : basisIdx (c k))
(hij : i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) j) (t : Tensor S c) :
contrT n i j hij (evalT k Ο t) =
permT id (.succAbove_succSuccAbove_comm k i j hij.1)
(evalT (Fin.predPredAbove (k.succAbove i) (k.succAbove j) (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ k.succAbove i β k.succAbove j simp [hij.1] All goals completed! π) k (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ k β k.succAbove i β§ k β k.succAbove j simp All goals completed! π))
(basisIdxCongr (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ c k = (c β (k.succAbove i).succSuccAbove (k.succAbove j)) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) simp All goals completed! π) Ο)
(contrT (n + 1) (k.succAbove i) (k.succAbove j) β¨by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ k.succAbove i β k.succAbove j simp [hij.1] All goals completed! π, hij.2β© t)) := by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ (contrT n i j hij) ((evalT k Ο) t) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t))
induction' t using Tensor.induction_on_basis with b a t hb t1 t2 hb1 hb2 h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx cβ’ (contrT n i j hij) ((evalT k Ο) ((basis c) b)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) ((basis c) b)))hzero kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jβ’ (contrT n i j hij) ((evalT k Ο) 0) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) 0))hsmul kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) ja:kβt:S.Tensor chb:(contrT n i j hij) ((evalT k Ο) t) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t))β’ (contrT n i j hij) ((evalT k Ο) (a β’ t)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) (a β’ t)))hadd kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt1:S.Tensor ct2:S.Tensor chb1:(contrT n i j hij) ((evalT k Ο) t1) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t1))hb2:(contrT n i j hij) ((evalT k Ο) t2) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t2))β’ (contrT n i j hij) ((evalT k Ο) (t1 + t2)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) (t1 + t2)))
Β· h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx cβ’ (contrT n i j hij) ((evalT k Ο) ((basis c) b)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) ((basis c) b))) have hs : Pure.contrPCoeff i j hij
(Pure.basisVector (c β k.succAbove) (fun m => b (k.succAbove m))) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β¨by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx cβ’ k.succAbove i β k.succAbove j h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (contrT n i j hij) ((evalT k Ο) ((basis c) b)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) ((basis c) b))) simp [hij.1] All goals completed! π h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (contrT n i j hij) ((evalT k Ο) ((basis c) b)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) ((basis c) b))), hij.2β©
(Pure.basisVector c b) := rflh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (contrT n i j hij) ((evalT k Ο) ((basis c) b)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) ((basis c) b)))
conv_lhs => rw [evalT_basis] kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)| (contrT n i j hij) (if b k = Ο then (basis (c β k.succAbove)) fun j => b (k.succAbove j) else 0)
conv_rhs => rw [contrT_basis, map_smul, evalT_basis] kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)| (permT id β―)
(Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1)
else 0)
rw [apply_ite (contrT n i j hij), h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then (contrT n i j hij) ((basis (c β k.succAbove)) fun j => b (k.succAbove j)) else (contrT n i j hij) 0) =
(permT id β―)
(Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1)
else 0) h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 map_zero, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then (contrT n i j hij) ((basis (c β k.succAbove)) fun j => b (k.succAbove j)) else 0) =
(permT id β―)
(Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1)
else 0)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 contrT_basis, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun j => b (k.succAbove j)) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
(permT id β―)
(Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1)
else 0)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 hs, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
(permT id β―)
(Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1)
else 0)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 map_smul, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(permT id β―)
(if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1)
else 0)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
apply_ite (permT id (IsReindexing.succAbove_succSuccAbove_comm k i j hij.1)), h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(permT id β―)
((basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1))
else (permT id β―) 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 map_zero, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(permT id β―)
((basis
((c β (k.succAbove i).succSuccAbove (k.succAbove j)) β
((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove))
fun j_1 =>
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove j_1))
else 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
permT_basis, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 smul_ite, h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’ 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 smul_zero h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0]h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
have hidx : β m, (k.succAbove i).succSuccAbove (k.succAbove j)
(((k.succAbove i).predPredAbove (k.succAbove j) (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)m:Fin nβ’ k.succAbove i β k.succAbove j h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp [hij.1] All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0) k (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)m:Fin nβ’ k β k.succAbove i β§ k β k.succAbove jh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0)).succAbove m)
= k.succAbove (i.succSuccAbove j m) := by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ (contrT n i j hij) ((evalT k Ο) t) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t))h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
intro m kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)m:Fin nβ’ (k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
apply Fin.val_injective kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)m:Fin nβ’ β((k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m)) =
β(k.succAbove (i.succSuccAbove j m))h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
simp only [Fin.succSuccAbove, Fin.succAbove, Fin.predPredAbove, Fin.lt_def,
Fin.val_castSucc, Fin.val_succ, apply_ite Fin.val, apply_dite Fin.val] kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)m:Fin nβ’ (if
((if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1) <
if βi < βk then βi else βi + 1) β§
(if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1) <
if βj < βk then βj else βj + 1 then
if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1
else
if
((if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then
βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then
βk - 1
else βk - 2 then
βm
else βm + 1) +
1 <
if βi < βk then βi else βi + 1) β§
(if βj < βk then βj else βj + 1) β€
if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1 then
(if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1) +
1
else
if
((if βi < βk then βi else βi + 1) β€
if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then
βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then
βk - 1
else βk - 2 then
βm
else βm + 1) β§
(if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then
βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then
βk - 1
else βk - 2 then
βm
else βm + 1) +
1 <
if βj < βk then βj else βj + 1 then
(if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1) +
1
else
(if
βm <
if h : (βk < if βi < βk then βi else βi + 1) β§ βk < if βj < βk then βj else βj + 1 then βk
else
if h : (βk - 1 < if βi < βk then βi else βi + 1) β§ (if βj < βk then βj else βj + 1) β€ βk then βk - 1
else
if h : (if βi < βk then βi else βi + 1) - 1 β€ βk β§ βk < if βj < βk then βj else βj + 1 then βk - 1
else βk - 2 then
βm
else βm + 1) +
2) =
if
(if βm < βi β§ βm < βj then βm
else if βm + 1 < βi β§ βj β€ βm then βm + 1 else if βi β€ βm β§ βm + 1 < βj then βm + 1 else βm + 2) <
βk then
if βm < βi β§ βm < βj then βm
else if βm + 1 < βi β§ βj β€ βm then βm + 1 else if βi β€ βm β§ βm + 1 < βj then βm + 1 else βm + 2
else
(if βm < βi β§ βm < βj then βm
else if βm + 1 < βi β§ βj β€ βm then βm + 1 else if βi β€ βm β§ βm + 1 < βj then βm + 1 else βm + 2) +
1h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
grind (splits := 60)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
have hk : (k.succAbove i).succSuccAbove (k.succAbove j)
((k.succAbove i).predPredAbove (k.succAbove j) (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ k.succAbove i β k.succAbove j h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp [hij.1] All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0) k (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)β’ k β k.succAbove i β§ k β k.succAbove jh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0)) = k := by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ (contrT n i j hij) ((evalT k Ο) t) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t))h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simph kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
have hcond : (ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
((k.succAbove i).predPredAbove (k.succAbove j) (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ k.succAbove i β k.succAbove j h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp [hij.1] All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0) k (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ k β k.succAbove i β§ k β k.succAbove jh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0)) =
basisIdxCongr (by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ c k = (c β (k.succAbove i).succSuccAbove (k.succAbove j)) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 simp All goals completed! πh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0) Ο) = (b k = Ο) := by kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt:S.Tensor cβ’ (contrT n i j hij) ((evalT k Ο) t) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t))h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
simp only [ComponentIdx.dropPair] kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (b ((k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―)) =
(basisIdxCongr β―) Ο) =
(b k = Ο)h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
rw [ComponentIdx.congr_right b _ k hk, kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ ((basisIdxCongr β―) (b k) = (basisIdxCongr β―) Ο) = (b k = Ο) kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (basisIdxCongr β―) (b k) = (basisIdxCongr β―) Ο β b k = Οh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0 eq_iff_iff kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (basisIdxCongr β―) (b k) = (basisIdxCongr β―) Ο β b k = Ο kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (basisIdxCongr β―) (b k) = (basisIdxCongr β―) Ο β b k = Οh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0] kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = kβ’ (basisIdxCongr β―) (b k) = (basisIdxCongr β―) Ο β b k = Οh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
exact (basisIdxCongr _).apply_eq_iff_eqh kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if
ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
simp only [hcond] h kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)β’ (if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j))
else 0) =
if b k = Ο then
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
else 0
split_ifs with hbk pos kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:b k = Οβ’ Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))neg kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:Β¬b k = Οβ’ 0 = 0
Β· pos kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:b k = Οβ’ Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b) β’
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1))) congr 1 pos.e_a kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:b k = Οβ’ (basis ((c β k.succAbove) β i.succSuccAbove j)) (ComponentIdx.dropPair i j fun j => b (k.succAbove j)) =
(basis ((c β k.succAbove) β i.succSuccAbove j)) fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
congr 1 pos.e_a.e_6 kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:b k = Οβ’ (ComponentIdx.dropPair i j fun j => b (k.succAbove j)) = fun i_1 =>
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id i_1)))
funext m pos.e_a.e_6 kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:b k = Οm:Fin nβ’ ComponentIdx.dropPair i j (fun j => b (k.succAbove j)) m =
(basisIdxCongr β―)
(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove (id m)))
simp only [ComponentIdx.dropPair, id_eq] pos.e_a.e_6 kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:b k = Οm:Fin nβ’ b (k.succAbove (i.succSuccAbove j m)) =
(basisIdxCongr β―)
(b
((k.succAbove i).succSuccAbove (k.succAbove j)
(((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m)))
exact ComponentIdx.congr_right b _ _ (hidx m).symm All goals completed! π
Β· neg kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jb:ComponentIdx chs:Pure.contrPCoeff i j hij (Pure.basisVector (c β k.succAbove) fun m => b (k.succAbove m)) =
Pure.contrPCoeff (k.succAbove i) (k.succAbove j) β― (Pure.basisVector c b)hidx:β (m : Fin n),
(k.succAbove i).succSuccAbove (k.succAbove j) (((k.succAbove i).predPredAbove (k.succAbove j) β― k β―).succAbove m) =
k.succAbove (i.succSuccAbove j m)hk:(k.succAbove i).succSuccAbove (k.succAbove j) ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) = khcond:(ComponentIdx.dropPair (k.succAbove i) (k.succAbove j) b ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) =
(basisIdxCongr β―) Ο) =
(b k = Ο)hbk:Β¬b k = Οβ’ 0 = 0 rfl All goals completed! π
Β· hzero kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jβ’ (contrT n i j hij) ((evalT k Ο) 0) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) 0)) simp All goals completed! π
Β· hsmul kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) ja:kβt:S.Tensor chb:(contrT n i j hij) ((evalT k Ο) t) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t))β’ (contrT n i j hij) ((evalT k Ο) (a β’ t)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) (a β’ t))) simp only [map_smul, hb] All goals completed! π
Β· hadd kβ:Typeinstββ΅:CommRing kβC: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 bn:βc:Fin (n + 1 + 1 + 1) β Ck:Fin (n + 1 + 1 + 1)i:Fin (n + 1 + 1)j:Fin (n + 1 + 1)Ο:basisIdx (c k)hij:i β j β§ S.Ο ((c β k.succAbove) i) = (c β k.succAbove) jt1:S.Tensor ct2:S.Tensor chb1:(contrT n i j hij) ((evalT k Ο) t1) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t1))hb2:(contrT n i j hij) ((evalT k Ο) t2) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) t2))β’ (contrT n i j hij) ((evalT k Ο) (t1 + t2)) =
(permT id β―)
((evalT ((k.succAbove i).predPredAbove (k.succAbove j) β― k β―) ((basisIdxCongr β―) Ο))
((contrT (n + 1) (k.succAbove i) (k.succAbove j) β―) (t1 + t2))) simp only [map_add, hb1, hb2] All goals completed! πTODO "Add a lemma similar to `contrT_evalT` except with the contraction and
evaluation the other way around."The commutation of evaluation with products.
Evaluating an index in the right factor of a tensor product commutes with forming the product, up to the identity reindexing which identifies the two ways of removing that index from the appended color list.
lemma evalT_prodT_right {n n1 : β} {c : Fin n β C} {c1 : Fin (n1 + 1) β C}
(i : Fin (n1 + 1)) (x : basisIdx (c1 i)) (t : Tensor S c) (t1 : Tensor S c1) :
prodT t (evalT i x t1) =
permT id (IsReindexing.append_succAbove_natAdd (n := n) (n1 := n1) i)
(evalT (Fin.natAdd (m := n1 + 1) n i) (basisIdxCongr (by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ c1 i = Fin.append c c1 (Fin.natAdd n i) simp All goals completed! π) x) (prodT t t1)) := by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (prodT t) ((evalT i x) t1) = (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1))
symm k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1)) = (prodT t) ((evalT i x) t1)
induction' t using Tensor.induction_on_basis with b a t ht t2 t3 ht2 ht3 h k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1b:ComponentIdx cβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t1)) =
(prodT ((basis c) b)) ((evalT i x) t1)hzero k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT 0) t1)) = (prodT 0) ((evalT i x) t1)hsmul k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1a:kt:S.Tensor cht:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1)) = (prodT t) ((evalT i x) t1)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT (a β’ t)) t1)) = (prodT (a β’ t)) ((evalT i x) t1)hadd k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1t2:S.Tensor ct3:S.Tensor cht2:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t2) t1)) = (prodT t2) ((evalT i x) t1)ht3:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t3) t1)) = (prodT t3) ((evalT i x) t1)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT (t2 + t3)) t1)) =
(prodT (t2 + t3)) ((evalT i x) t1)
Β· h k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1b:ComponentIdx cβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t1)) =
(prodT ((basis c) b)) ((evalT i x) t1) induction' t1 using Tensor.induction_on_basis with b1 a t ht t2 t3 ht2 ht3 h.h k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))h.hzero k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) 0)) =
(prodT ((basis c) b)) ((evalT i x) 0)h.hsmul k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx ca:kt:S.Tensor c1ht:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t)) =
(prodT ((basis c) b)) ((evalT i x) t)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) (a β’ t))) =
(prodT ((basis c) b)) ((evalT i x) (a β’ t))h.hadd k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx ct2:S.Tensor c1t3:S.Tensor c1ht2:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t2)) =
(prodT ((basis c) b)) ((evalT i x) t2)ht3:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t3)) =
(prodT ((basis c) b)) ((evalT i x) t3)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) (t2 + t3))) =
(prodT ((basis c) b)) ((evalT i x) (t2 + t3))
Β· h.h k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) by_cases hi : b1 i = x pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
Β· pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) have hprod : ComponentIdx.prod.symm (b, b1) (Fin.natAdd (m := n1 + 1) n i) =
basisIdxCongr (by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xβ’ c1 i = Fin.append c c1 (Fin.natAdd n i) pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) simp All goals completed! π pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))) x := by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (prodT t) ((evalT i x) t1) = (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
simp [hi]pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
rw [prodT_basis', pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―)
((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((basis (Fin.append c c1)) (ComponentIdx.prod.symm (b, b1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) evalT_basis, pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―)
(if ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) x then
(basis (Fin.append c c1 β (Fin.natAdd n i).succAbove)) fun j =>
ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove j)
else 0) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) if_pos hprod, pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (permT id β―)
((basis (Fin.append c c1 β (Fin.natAdd n i).succAbove)) fun j =>
ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove j)) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) permT_basis pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))]pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
rw [evalT_basis, pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) (if b1 i = x then (basis (c1 β i.succAbove)) fun j => b1 (i.succAbove j) else 0) pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(basis (Fin.append c (c1 β i.succAbove))) (ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j))) if_pos hi, pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(prodT ((basis c) b)) ((basis (c1 β i.succAbove)) fun j => b1 (i.succAbove j))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(basis (Fin.append c (c1 β i.succAbove))) (ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j))) prodT_basis' pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(basis (Fin.append c (c1 β i.succAbove))) (ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)))pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(basis (Fin.append c (c1 β i.succAbove))) (ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)))]pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ ((basis (Fin.append c (c1 β i.succAbove))) fun i_1 =>
(basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
(basis (Fin.append c (c1 β i.succAbove))) (ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)))
congr pos.e_6 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ (fun i_1 => (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id i_1)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j))
ext j pos.e_6 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id j))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) j
refine Fin.addCases (fun a => ?_) (fun a => ?_) j pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
Β· pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a) have hidx : (Fin.natAdd (m := n1 + 1) n i).succAbove (Fin.castAdd n1 a) =
Fin.castAdd (n1 + 1) a := by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (prodT t) ((evalT i x) t1) = (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1)) pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
rw [Fin.succAbove_of_castSucc_lt k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc = Fin.castAdd (n1 + 1) ah k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc < Fin.natAdd n i k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc = Fin.castAdd (n1 + 1) ah k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc < Fin.natAdd n ipos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)] k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc = Fin.castAdd (n1 + 1) ah k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc < Fin.natAdd n ipos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
Β· k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc = Fin.castAdd (n1 + 1) apos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a) ext k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ β(Fin.castAdd n1 a).castSucc = β(Fin.castAdd (n1 + 1) a)pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
simp All goals completed! πpos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
Β· h k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ (Fin.castAdd n1 a).castSucc < Fin.natAdd n ipos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a) simp only [Fin.lt_def, Fin.val_castSucc, Fin.val_castAdd, Fin.val_natAdd] h k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nβ’ βa < n + βipos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
omegapos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.castAdd n1 a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
simp only [id_eq] pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (Fin.castAdd n1 a))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
erw [ComponentIdx.congr_right (ComponentIdx.prod.symm (b, b1)) _ _ hidx pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) ((basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) (Fin.castAdd (n1 + 1) a))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)] pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) ((basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) (Fin.castAdd (n1 + 1) a))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.castAdd n1 a)
simp only [ComponentIdx.prod_symm_castAdd] pos.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) ((basisIdxCongr β―) ((basisIdxCongr β―) (b a))) = (basisIdxCongr β―) (b a)
exact basisIdxCongr_heq_arg _ _ (by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ (basisIdxCongr β―) ((basisIdxCongr β―) (b a)) β b a
simp only [basisIdxCongr, Equiv.cast_apply] k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin nhidx:(Fin.natAdd n i).succAbove (Fin.castAdd n1 a) = Fin.castAdd (n1 + 1) aβ’ cast β― (cast β― (b a)) β b a
exact (cast_heq _ _).trans (cast_heq _ _) All goals completed! π)
Β· pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a) have hidx : (Fin.natAdd (m := n1 + 1) n i).succAbove
(Fin.natAdd (m := n1) n a) =
Fin.natAdd (m := n1 + 1) n (i.succAbove a) := by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (prodT t) ((evalT i x) t1) = (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1)) pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
have hcond : ((Fin.natAdd (m := n1) n a).castSucc <
Fin.natAdd (m := n1 + 1) n i) β
(a.castSucc < i) := by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (prodT t) ((evalT i x) t1) = (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1)) k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < iβ’ (Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
simp only [Fin.lt_def, Fin.val_castSucc, Fin.val_natAdd] k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1β’ n + βa < n + βi β βa < βi k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < iβ’ (Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
omega k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < iβ’ (Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a) k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < iβ’ (Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
simp only [Fin.succAbove, hcond] k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < iβ’ (if a.castSucc < i then (Fin.natAdd n a).castSucc else (Fin.natAdd n a).succ) =
Fin.natAdd n (if a.castSucc < i then a.castSucc else a.succ)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
split_ifs pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:a.castSucc < iβ’ (Fin.natAdd n a).castSucc = Fin.natAdd n a.castSuccneg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:Β¬a.castSucc < iβ’ (Fin.natAdd n a).succ = Fin.natAdd n a.succpos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a) <;> pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:a.castSucc < iβ’ (Fin.natAdd n a).castSucc = Fin.natAdd n a.castSuccneg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:Β¬a.castSucc < iβ’ (Fin.natAdd n a).succ = Fin.natAdd n a.succpos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a) ext neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:Β¬a.castSucc < iβ’ β(Fin.natAdd n a).succ = β(Fin.natAdd n a.succ)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a) <;> pos k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:a.castSucc < iβ’ β(Fin.natAdd n a).castSucc = β(Fin.natAdd n a.castSucc)neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hcond:(Fin.natAdd n a).castSucc < Fin.natAdd n i β a.castSucc < ihβ:Β¬a.castSucc < iβ’ β(Fin.natAdd n a).succ = β(Fin.natAdd n a.succ)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a) simp [Nat.add_assoc]pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (id (Fin.natAdd n a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
simp only [id_eq] pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove (Fin.natAdd n a))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
erw [ComponentIdx.congr_right (ComponentIdx.prod.symm (b, b1)) _ _ hidx pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) ((basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) (Fin.natAdd n (i.succAbove a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)] pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) ((basisIdxCongr β―) (ComponentIdx.prod.symm (b, b1) (Fin.natAdd n (i.succAbove a)))) =
ComponentIdx.prod.symm (b, fun j => b1 (i.succAbove j)) (Fin.natAdd n a)
simp only [ComponentIdx.prod_symm_natAdd] pos.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) ((basisIdxCongr β―) ((basisIdxCongr β―) (b1 (i.succAbove a)))) = (basisIdxCongr β―) (b1 (i.succAbove a))
exact basisIdxCongr_heq_arg _ _ (by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ (basisIdxCongr β―) ((basisIdxCongr β―) (b1 (i.succAbove a))) β b1 (i.succAbove a)
simp only [basisIdxCongr, Equiv.cast_apply] k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xj:Fin (n.add n1)a:Fin n1hidx:(Fin.natAdd n i).succAbove (Fin.natAdd n a) = Fin.natAdd n (i.succAbove a)β’ cast β― (cast β― (b1 (i.succAbove a))) β b1 (i.succAbove a)
exact (cast_heq _ _).trans (cast_heq _ _) All goals completed! π)
Β· neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) have hprod : ComponentIdx.prod.symm (b, b1) (Fin.natAdd (m := n1 + 1) n i) β
basisIdxCongr (by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xβ’ c1 i = Fin.append c c1 (Fin.natAdd n i) neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) simp All goals completed! πneg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))) x := by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t:S.Tensor ct1:S.Tensor c1β’ (prodT t) ((evalT i x) t1) = (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1))neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
intro hprod k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ Falseneg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
exact hi (by k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) xβ’ b1 i = xneg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) simpa [ComponentIdx.prod] using hprod All goals completed! πneg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)))neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) ((basis c1) b1))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
rw [prodT_basis', neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―)
((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((basis (Fin.append c c1)) (ComponentIdx.prod.symm (b, b1)))) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) evalT_basis, neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―)
(if ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) = (basisIdxCongr β―) x then
(basis (Fin.append c c1 β (Fin.natAdd n i).succAbove)) fun j =>
ComponentIdx.prod.symm (b, b1) ((Fin.natAdd n i).succAbove j)
else 0) =
(prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) ((evalT i x) ((basis c1) b1)) if_neg hprod neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))]neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) ((evalT i x) ((basis c1) b1))
rw [evalT_basis, neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) (if b1 i = x then (basis (c1 β i.succAbove)) fun j => b1 (i.succAbove j) else 0) neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) 0 if_neg hi neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) 0neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) 0]neg k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cb1:ComponentIdx c1hi:Β¬b1 i = xhprod:ComponentIdx.prod.symm (b, b1) (Fin.natAdd n i) β (basisIdxCongr β―) xβ’ (permT id β―) 0 = (prodT ((basis c) b)) 0
simp All goals completed! π
Β· h.hzero k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx cβ’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) 0)) =
(prodT ((basis c) b)) ((evalT i x) 0) simp All goals completed! π
Β· h.hsmul k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx ca:kt:S.Tensor c1ht:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t)) =
(prodT ((basis c) b)) ((evalT i x) t)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) (a β’ t))) =
(prodT ((basis c) b)) ((evalT i x) (a β’ t)) simp [ht] All goals completed! π
Β· h.hadd k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)b:ComponentIdx ct2:S.Tensor c1t3:S.Tensor c1ht2:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t2)) =
(prodT ((basis c) b)) ((evalT i x) t2)ht3:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) t3)) =
(prodT ((basis c) b)) ((evalT i x) t3)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT ((basis c) b)) (t2 + t3))) =
(prodT ((basis c) b)) ((evalT i x) (t2 + t3)) simp [map_add, ht2, ht3] All goals completed! π
Β· hzero k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT 0) t1)) = (prodT 0) ((evalT i x) t1) simp All goals completed! π
Β· hsmul k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1a:kt:S.Tensor cht:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t) t1)) = (prodT t) ((evalT i x) t1)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT (a β’ t)) t1)) = (prodT (a β’ t)) ((evalT i x) t1) simp [ht] All goals completed! π
Β· hadd k:Typeinstββ΅:CommRing 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 bn:βn1:βc:Fin n β Cc1:Fin (n1 + 1) β Ci:Fin (n1 + 1)x:basisIdx (c1 i)t1:S.Tensor c1t2:S.Tensor ct3:S.Tensor cht2:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t2) t1)) = (prodT t2) ((evalT i x) t1)ht3:(permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT t3) t1)) = (prodT t3) ((evalT i x) t1)β’ (permT id β―) ((evalT (Fin.natAdd n i) ((basisIdxCongr β―) x)) ((prodT (t2 + t3)) t1)) =
(prodT (t2 + t3)) ((evalT i x) t1) simp [map_add, ht2, ht3] All goals completed! πTODO "Add a lemmas related to the commutation of evaluation with contraction."Other properties of evaluation
Evaluating the single-index basis tensor basis ![c] (single.symm b) at the index x
yields the field element 1 if b = x (transported across ![c] 0 = c) and 0 otherwise:
evaluation of a one-index basis tensor is the Kronecker delta.
lemma evalT_basis_single {c : C} (b : basisIdx c) (x : basisIdx (![c] 0)) :
(evalT 0 x (basis (S := S) ![c] (ComponentIdx.single.symm b))).toField =
if basisIdxCongr (by k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)β’ c = ![c] 0 simp All goals completed! π) b = x then 1 else 0 := by k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)β’ toField ((evalT 0 x) ((basis ![c]) (ComponentIdx.single.symm b))) = if (basisIdxCongr β―) b = x then 1 else 0
rw [evalT_basis k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)β’ toField
(if ComponentIdx.single.symm b 0 = x then
(basis (![c] β Fin.succAbove 0)) fun j => ComponentIdx.single.symm b (Fin.succAbove 0 j)
else 0) =
if (basisIdxCongr β―) b = x then 1 else 0 k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)β’ toField
(if ComponentIdx.single.symm b 0 = x then
(basis (![c] β Fin.succAbove 0)) fun j => ComponentIdx.single.symm b (Fin.succAbove 0 j)
else 0) =
if (basisIdxCongr β―) b = x then 1 else 0] k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)β’ toField
(if ComponentIdx.single.symm b 0 = x then
(basis (![c] β Fin.succAbove 0)) fun j => ComponentIdx.single.symm b (Fin.succAbove 0 j)
else 0) =
if (basisIdxCongr β―) b = x then 1 else 0
simp only [ComponentIdx.single_symm_apply] k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)β’ toField (if (basisIdxCongr β―) b = x then (basis (![c] β Fin.succAbove 0)) fun j => (basisIdxCongr β―) b else 0) =
if (basisIdxCongr β―) b = x then 1 else 0
split_ifs pos k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)hβ:(basisIdxCongr β―) b = xβ’ toField ((basis (![c] β Fin.succAbove 0)) fun j => (basisIdxCongr β―) b) = 1neg k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)hβ:Β¬(basisIdxCongr β―) b = xβ’ toField 0 = 0
Β· pos k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)hβ:(basisIdxCongr β―) b = xβ’ toField ((basis (![c] β Fin.succAbove 0)) fun j => (basisIdxCongr β―) b) = 1 exact toField_basis _ All goals completed! π
Β· neg k:Typeinstββ΅:CommRing 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 bβc:Cb:basisIdx cx:basisIdx (![c] 0)hβ:Β¬(basisIdxCongr β―) b = xβ’ toField 0 = 0 simp All goals completed! π
Basis expansion of a one-index tensor: every t : Tensor S ![c] is the sum over basis
indices i of its evaluation coefficient toField (evalT 0 i t) times the corresponding
basis tensor.
lemma eq_sum_evalT_of_single_tensor_basis {c : C} (t : Tensor S ![c]) :
t = β i, toField (evalT 0 i t) β’ basis ![c] (ComponentIdx.single.symm
(basisIdxCongr (by k:Typeinstββ΅:CommRing 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:Ct:S.Tensor ![c]i:basisIdx (![c] 0)β’ ![c] 0 = c simp All goals completed! π) i)) := by k:Typeinstββ΅:CommRing 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:Ct:S.Tensor ![c]β’ t = β i, toField ((evalT 0 i) t) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))
induction' t using Tensor.induction_on_basis with b a t h t1 t2 h1 h2 h k:Typeinstββ΅:CommRing 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:Cb:ComponentIdx ![c]β’ (basis ![c]) b =
β i, toField ((evalT 0 i) ((basis ![c]) b)) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))hzero k:Typeinstββ΅:CommRing 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β’ 0 = β i, toField ((evalT 0 i) 0) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))hsmul k:Typeinstββ΅:CommRing 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:Ca:kt:S.Tensor ![c]h:t = β i, toField ((evalT 0 i) t) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))β’ a β’ t = β i, toField ((evalT 0 i) (a β’ t)) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))hadd k:Typeinstββ΅:CommRing 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:Ct1:S.Tensor ![c]t2:S.Tensor ![c]h1:t1 = β i, toField ((evalT 0 i) t1) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))h2:t2 = β i, toField ((evalT 0 i) t2) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))β’ t1 + t2 = β i, toField ((evalT 0 i) (t1 + t2)) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))
Β· h k:Typeinstββ΅:CommRing 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:Cb:ComponentIdx ![c]β’ (basis ![c]) b =
β i, toField ((evalT 0 i) ((basis ![c]) b)) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i)) obtain β¨i, rflβ© := ComponentIdx.single.symm.surjective b h k:Typeinstββ΅:CommRing 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:basisIdx cβ’ (basis ![c]) (ComponentIdx.single.symm i) =
β i_1,
toField ((evalT 0 i_1) ((basis ![c]) (ComponentIdx.single.symm i))) β’
(basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i_1))
conv_rhs => enter [2, i] k:Typeinstββ΅:CommRing 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β:basisIdx ci:basisIdx (![c] 0)| toField ((evalT 0 i) ((basis ![c]) (ComponentIdx.single.symm iβ))) β’
(basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i)); rw [evalT_basis_single] k:Typeinstββ΅:CommRing 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β:basisIdx ci:basisIdx (![c] 0)| (if (basisIdxCongr β―) iβ = i then 1 else 0) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))
simp All goals completed! π
Β· hzero k:Typeinstββ΅:CommRing 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β’ 0 = β i, toField ((evalT 0 i) 0) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i)) simp All goals completed! π
Β· hsmul k:Typeinstββ΅:CommRing 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:Ca:kt:S.Tensor ![c]h:t = β i, toField ((evalT 0 i) t) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))β’ a β’ t = β i, toField ((evalT 0 i) (a β’ t)) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i)) conv_lhs => rw [h] k:Typeinstββ΅:CommRing 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:Ca:kt:S.Tensor ![c]h:t = β i, toField ((evalT 0 i) t) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))| a β’ β i, toField ((evalT 0 i) t) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))
simp [Finset.smul_sum, smul_smul] All goals completed! π
Β· hadd k:Typeinstββ΅:CommRing 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:Ct1:S.Tensor ![c]t2:S.Tensor ![c]h1:t1 = β i, toField ((evalT 0 i) t1) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))h2:t2 = β i, toField ((evalT 0 i) t2) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))β’ t1 + t2 = β i, toField ((evalT 0 i) (t1 + t2)) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i)) simp [add_smul, Finset.sum_add_distrib] hadd k:Typeinstββ΅:CommRing 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:Ct1:S.Tensor ![c]t2:S.Tensor ![c]h1:t1 = β i, toField ((evalT 0 i) t1) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))h2:t2 = β i, toField ((evalT 0 i) t2) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) i))β’ t1 + t2 =
β x, toField ((evalT 0 x) t1) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) x)) +
β x, toField ((evalT 0 x) t2) β’ (basis ![c]) (ComponentIdx.single.symm ((basisIdxCongr β―) x))
grind All goals completed! π
Reconstruction of a tensor from the evaluations of its last index: every t : Tensor S c
is the sum over basis indices i of the evaluation evalT (Fin.last n) i t tensored with
the basis covector basis ![c (Fin.last n)] (single.symm i), with the appended index
permuted back into the last slot.
lemma eq_sum_evalT {n : β} {c : Fin (n + 1) β C} (t : Tensor S c) :
t = β i, permT id (IsReindexing.append_succ_last c) (prodT (evalT (Fin.last n) i t)
(basis ![c (Fin.last n)] (ComponentIdx.single.symm i))) := by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct:S.Tensor cβ’ t = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
induction' t using Tensor.induction_on_basis with b a t h t1 t2 h1 h2 h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx cβ’ (basis c) b =
β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((basis c) b))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))hzero k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cβ’ 0 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) 0)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))hsmul k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ca:kt:S.Tensor ch:t = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))β’ a β’ t =
β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) (a β’ t))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))hadd k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch1:t1 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))h2:t2 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))β’ t1 + t2 =
β i,
(permT id β―) ((prodT ((evalT (Fin.last n) i) (t1 + t2))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
Β· h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx cβ’ (basis c) b =
β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((basis c) b))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) conv_rhs => enter [2, i] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ci:basisIdx (c (Fin.last n))| (permT id β―) ((prodT ((evalT (Fin.last n) i) ((basis c) b))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))); rw [evalT_basis] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ci:basisIdx (c (Fin.last n))| (permT id β―)
((prodT
(if b (Fin.last n) = i then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j) else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
generalize_proofs h1 h2 h3 h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
β i,
(permT id h1)
((prodT
(if b (Fin.last n) = i then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
rw [Finset.sum_eq_single (b (Fin.last n)) h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n)))))h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ β b_1 β Finset.univ,
b_1 β b (Fin.last n) β
(permT id h1)
((prodT
(if b (Fin.last n) = b_1 then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm b_1))) =
0h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ b (Fin.last n) β Finset.univ β
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n))))) =
0 h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n)))))h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ β b_1 β Finset.univ,
b_1 β b (Fin.last n) β
(permT id h1)
((prodT
(if b (Fin.last n) = b_1 then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm b_1))) =
0h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ b (Fin.last n) β Finset.univ β
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n))))) =
0] h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n)))))h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ β b_1 β Finset.univ,
b_1 β b (Fin.last n) β
(permT id h1)
((prodT
(if b (Fin.last n) = b_1 then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm b_1))) =
0h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ b (Fin.last n) β Finset.univ β
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n))))) =
0
Β· h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n))))) simp only [Nat.succ_eq_add_one, Nat.reduceAdd, βreduceIte] h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
(permT id h1)
((prodT ((basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n)))))
rw [prodT_basis, h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (basis c) b =
(permT id h1)
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n))))).toTensor h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (Pure.basisVector c b).toTensor =
(Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))).toTensor basis_apply, h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (Pure.basisVector c b).toTensor =
(permT id h1)
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n))))).toTensorh k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (Pure.basisVector c b).toTensor =
(Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))).toTensor permT_pure h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (Pure.basisVector c b).toTensor =
(Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))).toTensorh k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (Pure.basisVector c b).toTensor =
(Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))).toTensor]h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ (Pure.basisVector c b).toTensor =
(Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm
(fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))).toTensor
congr h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ Pure.basisVector c b =
Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))
funext i h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)β’ Pure.basisVector c b i =
Pure.permP id h1
(Pure.basisVector (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)])
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))))
i
simp only [Pure.basisVector, Pure.permP_basisVector] h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)β’ (bβ (c i)) (b i) =
(bβ (c i))
((basisIdxCongr β―)
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))
(id i)))
congr h.e_6 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)β’ b i =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n))) (id i))
refine Fin.addCases (fun j => ?_) (fun j => ?_) i h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ b (Fin.castAdd 1 j) =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))
(id (Fin.castAdd 1 j)))h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin 1β’ b (Fin.natAdd n j) =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))
(id (Fin.natAdd n j)))
Β· h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ b (Fin.castAdd 1 j) =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))
(id (Fin.castAdd 1 j))) simp only [id_eq, ComponentIdx.prod_symm_castAdd, Function.comp_apply] h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ b (Fin.castAdd 1 j) = (basisIdxCongr β―) ((basisIdxCongr β―) (b ((Fin.last n).succAbove j)))
erw [basisIdxCongr_apply_apply h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ b (Fin.castAdd 1 j) = (basisIdxCongr β―) (b ((Fin.last n).succAbove j))] h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ b (Fin.castAdd 1 j) = (basisIdxCongr β―) (b ((Fin.last n).succAbove j))
exact ComponentIdx.congr_right b _ _ (by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ Fin.castAdd 1 j = (Fin.last n).succAbove j rw [Fin.succAbove_last k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ Fin.castAdd 1 j = j.castSucc k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ Fin.castAdd 1 j = j.castSucc] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin nβ’ Fin.castAdd 1 j = j.castSucc; rfl All goals completed! π)
Β· h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin 1β’ b (Fin.natAdd n j) =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (fun j => b ((Fin.last n).succAbove j), ComponentIdx.single.symm (b (Fin.last n)))
(id (Fin.natAdd n j))) simp only [id_eq, ComponentIdx.prod_symm_natAdd, ComponentIdx.single_symm_apply,
basisIdxCongr_apply_apply] h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin 1β’ b (Fin.natAdd n j) = (basisIdxCongr β―) ((basisIdxCongr β―) (b (Fin.last n)))
erw [basisIdxCongr_apply_apply h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin 1β’ b (Fin.natAdd n j) = (basisIdxCongr β―) (b (Fin.last n))] h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin 1β’ b (Fin.natAdd n j) = (basisIdxCongr β―) (b (Fin.last n))
exact ComponentIdx.congr_right _ _ _ (by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)j:Fin 1β’ Fin.natAdd n j = Fin.last n fin_cases j Β«0Β» k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))i:Fin (n + 1)β’ Fin.natAdd n ((fun i => i) β¨0, β―β©) = Fin.last n; rfl All goals completed! π)
Β· h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ β b_1 β Finset.univ,
b_1 β b (Fin.last n) β
(permT id h1)
((prodT
(if b (Fin.last n) = b_1 then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm b_1))) =
0 intro j h1 h1 h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))j:basisIdx (c (Fin.last n))h1β:j β Finset.univh1:j β b (Fin.last n)β’ (permT id h1βΒΉ)
((prodT
(if b (Fin.last n) = j then (basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j) else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm j))) =
0
rw [if_neg (by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))j:basisIdx (c (Fin.last n))h1β:j β Finset.univh1:j β b (Fin.last n)β’ Β¬b (Fin.last n) = j h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))j:basisIdx (c (Fin.last n))h1β:j β Finset.univh1:j β b (Fin.last n)β’ (permT id h1βΒΉ) ((prodT 0) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm j))) = 0 grind All goals completed! πh.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))j:basisIdx (c (Fin.last n))h1β:j β Finset.univh1:j β b (Fin.last n)β’ (permT id h1βΒΉ) ((prodT 0) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm j))) = 0)]h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))j:basisIdx (c (Fin.last n))h1β:j β Finset.univh1:j β b (Fin.last n)β’ (permT id h1βΒΉ) ((prodT 0) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm j))) = 0
simp All goals completed! π
Β· h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:IsReindexing (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]) c idh2:SMulCommClass k k (S.Tensor (Fin.append (c β (Fin.last n).succAbove) ![c (Fin.last n)]))β’ b (Fin.last n) β Finset.univ β
(permT id h1)
((prodT
(if b (Fin.last n) = b (Fin.last n) then
(basis (c β (Fin.last n).succAbove)) fun j => b ((Fin.last n).succAbove j)
else 0))
((basis ![c (Fin.last n)]) (ComponentIdx.single.symm (b (Fin.last n))))) =
0 simp All goals completed! π
Β· hzero k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cβ’ 0 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) 0)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) simp All goals completed! π
Β· hsmul k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ca:kt:S.Tensor ch:t = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))β’ a β’ t =
β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) (a β’ t))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) conv_lhs => rw [h] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ca:kt:S.Tensor ch:t = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))| a β’ β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
simp [Finset.smul_sum] All goals completed! π
Β· hadd k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch1:t1 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))h2:t2 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))β’ t1 + t2 =
β i,
(permT id β―) ((prodT ((evalT (Fin.last n) i) (t1 + t2))) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) simp [Finset.sum_add_distrib] hadd k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch1:t1 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))h2:t2 = β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))β’ t1 + t2 =
β x, (permT id β―) ((prodT ((evalT (Fin.last n) x) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm x))) +
β x, (permT id β―) ((prodT ((evalT (Fin.last n) x) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm x)))
grind All goals completed! π
Reconstruction of a tensor from the evaluations of its first index: every t : Tensor S c
is the sum over basis indices i of the basis covector basis ![c 0] (single.symm i) tensored
with the evaluation evalT 0 i t, with the prepended index permuted back into the first slot.
This is the first-index analogue of eq_sum_evalT.
lemma eq_sum_evalT_zero {n : β} {c : Fin (n + 1) β C} (t : Tensor S c) :
t = β i, permT _ (IsReindexing.append_of_first c)
(prodT (basis ![c 0] (ComponentIdx.single.symm i)) (evalT 0 i t)) := by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct:S.Tensor cβ’ t = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t))
induction' t using Tensor.induction_on_basis with b a t h t1 t2 h1 h2 h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx cβ’ (basis c) b =
β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) ((basis c) b)))hzero k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cβ’ 0 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) 0))hsmul k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ca:kt:S.Tensor ch:t = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t))β’ a β’ t = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) (a β’ t)))hadd k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch1:t1 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t1))h2:t2 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t2))β’ t1 + t2 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) (t1 + t2)))
Β· h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx cβ’ (basis c) b =
β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) ((basis c) b))) conv_rhs => enter [2, i] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ci:basisIdx (c 0)| (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) ((basis c) b))); rw [evalT_basis] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ci:basisIdx (c 0)| (permT (Fin.cast β―) β―)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm i)))
(if b 0 = i then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0))
generalize_proofs h1 h2 h3 h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
β i,
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm i)))
(if b 0 = i then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0))
rw [Finset.sum_eq_single (b 0) h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0))h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ β b_1 β Finset.univ,
b_1 β b 0 β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm b_1)))
(if b 0 = b_1 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ b 0 β Finset.univ β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0 h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0))h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ β b_1 β Finset.univ,
b_1 β b 0 β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm b_1)))
(if b 0 = b_1 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ b 0 β Finset.univ β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0] h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0))h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ β b_1 β Finset.univ,
b_1 β b 0 β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm b_1)))
(if b 0 = b_1 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ b 0 β Finset.univ β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0
Β· h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) simp only [βreduceIte] h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
((basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j)))
rw [prodT_basis, h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (basis c) b =
(permT (Fin.cast h2) h3)
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)))).toTensor h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (Pure.basisVector c b).toTensor =
(Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))).toTensor basis_apply, h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (Pure.basisVector c b).toTensor =
(permT (Fin.cast h2) h3)
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)))).toTensorh k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (Pure.basisVector c b).toTensor =
(Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))).toTensor permT_pure h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (Pure.basisVector c b).toTensor =
(Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))).toTensorh k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (Pure.basisVector c b).toTensor =
(Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))).toTensor]h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ (Pure.basisVector c b).toTensor =
(Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))).toTensor
congr h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ Pure.basisVector c b =
Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))
funext i h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)β’ Pure.basisVector c b i =
Pure.permP (Fin.cast h2) h3
(Pure.basisVector (Fin.append ![c 0] (c β Fin.succAbove 0))
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j))))
i
simp only [Pure.basisVector, Pure.permP_basisVector] h k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)β’ (bβ (c i)) (b i) =
(bβ (c i))
((basisIdxCongr β―)
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)) (Fin.cast h2 i)))
congr h.e_6 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)β’ b i =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)) (Fin.cast h2 i))
refine Fin.cases ?_ (fun j => ?_) i h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)β’ b 0 =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)) (Fin.cast h2 0))h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)) (Fin.cast h2 j.succ))
Β· h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)β’ b 0 =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)) (Fin.cast h2 0)) simp only [ComponentIdx.prod, Equiv.coe_fn_symm_mk, Fin.cast_zero, Fin.addCases,
ComponentIdx.single_symm_apply, basisIdxCongr_apply_apply] h.e_6.refine_1 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)β’ b 0 =
(basisIdxCongr β―)
(if h : β0 < Nat.succ 0 then (basisIdxCongr β―) (b 0)
else β― βΈ (basisIdxCongr β―) (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) 0 β―))))
exact ComponentIdx.congr_right b 0 0 rfl All goals completed! π
Β· h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ =
(basisIdxCongr β―)
(ComponentIdx.prod.symm (ComponentIdx.single.symm (b 0), fun j => b (Fin.succAbove 0 j)) (Fin.cast h2 j.succ)) simp only [ComponentIdx.prod, Equiv.coe_fn_symm_mk, Fin.addCases] h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ =
(basisIdxCongr β―)
(if h : β(Fin.cast h2 j.succ) < Nat.succ 0 then
(basisIdxCongr β―) (ComponentIdx.single.symm (b 0) ((Fin.cast h2 j.succ).castLT β―))
else β― βΈ (basisIdxCongr β―) (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―))))
rw [dif_neg (by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ Β¬β(Fin.cast h2 j.succ) < Nat.succ 0 h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ =
(basisIdxCongr β―)
(β― βΈ (basisIdxCongr β―) (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―)))) simp All goals completed! πh.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ =
(basisIdxCongr β―)
(β― βΈ (basisIdxCongr β―) (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―)))))]h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ =
(basisIdxCongr β―)
(β― βΈ (basisIdxCongr β―) (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―))))
simp only [eqRec_eq_cast, basisIdxCongr, Equiv.cast_apply, cast_cast] h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b j.succ = cast β― (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―)))
symm h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ cast β― (b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―))) = b j.succ
rw [cast_eq_iff_heq h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―)) β b j.succ h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―)) β b j.succ]h.e_6.refine_2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))i:Fin (n + 1)j:Fin nβ’ b (Fin.succAbove 0 (Fin.subNat (Nat.succ 0) (Fin.cast β― (Fin.cast h2 j.succ)) β―)) β b j.succ
congr 1 All goals completed! π
Β· h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ β b_1 β Finset.univ,
b_1 β b 0 β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm b_1)))
(if b 0 = b_1 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0 intro j h1 h1 h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))j:basisIdx (c 0)h1β:j β Finset.univh1:j β b 0β’ (permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm j)))
(if b 0 = j then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0
rw [if_neg (by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))j:basisIdx (c 0)h1β:j β Finset.univh1:j β b 0β’ Β¬b 0 = j h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))j:basisIdx (c 0)h1β:j β Finset.univh1:j β b 0β’ (permT (Fin.cast h2) h3) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm j))) 0) = 0 grind All goals completed! πh.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))j:basisIdx (c 0)h1β:j β Finset.univh1:j β b 0β’ (permT (Fin.cast h2) h3) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm j))) 0) = 0)]h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1βΒΉ:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))j:basisIdx (c 0)h1β:j β Finset.univh1:j β b 0β’ (permT (Fin.cast h2) h3) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm j))) 0) = 0
simp All goals completed! π
Β· h.hβ k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cb:ComponentIdx ch1:NeZero (n + 1)h2:n + 1 = Nat.succ 0 + nh3:IsReindexing (Fin.append ![c 0] (c β Fin.succAbove 0)) c (Fin.cast h2)pfβ:SMulCommClass k k (S.Tensor (Fin.append ![c 0] (c β Fin.succAbove 0)))β’ b 0 β Finset.univ β
(permT (Fin.cast h2) h3)
((prodT ((basis ![c 0]) (ComponentIdx.single.symm (b 0))))
(if b 0 = b 0 then (basis (c β Fin.succAbove 0)) fun j => b (Fin.succAbove 0 j) else 0)) =
0 simp All goals completed! π
Β· hzero k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Cβ’ 0 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) 0)) simp All goals completed! π
Β· hsmul k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ca:kt:S.Tensor ch:t = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t))β’ a β’ t = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) (a β’ t))) conv_lhs => rw [h] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ca:kt:S.Tensor ch:t = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t))| a β’ β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t))
simp [Finset.smul_sum] All goals completed! π
Β· hadd k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch1:t1 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t1))h2:t2 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t2))β’ t1 + t2 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) (t1 + t2))) simp [Finset.sum_add_distrib] hadd k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch1:t1 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t1))h2:t2 = β i, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm i))) ((evalT 0 i) t2))β’ t1 + t2 =
β x, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm x))) ((evalT 0 x) t1)) +
β x, (permT (Fin.cast β―) β―) ((prodT ((basis ![c 0]) (ComponentIdx.single.symm x))) ((evalT 0 x) t2))
grind All goals completed! π
lemma ext_of_evalT {n : β} {c : Fin (n + 1) β C} (t1 t2 : Tensor S c)
(h : β i Ο, evalT i Ο t1 = evalT i Ο t2) :
t1 = t2 := by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ t1 = t2
rw [eq_sum_evalT t1, k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) = t2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) eq_sum_evalT t2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i, (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
congr e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ (fun i => (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))) =
fun i => (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
funext i e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2i:basisIdx (c (Fin.last n))β’ (permT id β―) ((prodT ((evalT (Fin.last n) i) t1)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) =
(permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i)))
rw [h e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ch:β (i : Fin (n + 1)) (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2i:basisIdx (c (Fin.last n))β’ (permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) =
(permT id β―) ((prodT ((evalT (Fin.last n) i) t2)) ((basis ![c (Fin.last n)]) (ComponentIdx.single.symm i))) All goals completed! π] All goals completed! π
lemma ext_of_evalT_index {n : β} {c : Fin (n + 1) β C} {t1 t2 : Tensor S c}
(i : Fin (n + 1)) (h : β Ο, evalT i Ο t1 = evalT i Ο t2) :
t1 = t2 := by k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2β’ t1 = t2
have evalT_eq : β (j : Fin (n + 1)), j = i β
β (Ο : basisIdx (c j)), evalT j Ο t1 = evalT j Ο t2 := by
rintro j rfl Ο k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor cj:Fin (n + 1)h:β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2Ο:basisIdx (c j)β’ (evalT j Ο) t1 = (evalT j Ο) t2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2β’ t1 = t2; exact h Ο k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2β’ t1 = t2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2β’ t1 = t2
let e : Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)β’ t1 = t2
have h0 : IsReindexing c (c β e) e := β¨e.bijective, fun _ => rflβ© k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βeβ’ t1 = t2
have hlast : e (Fin.last n) = i := Equiv.swap_apply_right i (Fin.last n) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ t1 = t2
have hperm : permT e h0 t1 = permT e h0 t2 := by
rw [eq_sum_evalT (permT e h0 t1), k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) =
(permT (βe) h0) t2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2 eq_sum_evalT (permT e h0 t2) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) =
β i,
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2
congr 1 e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iβ’ (fun i =>
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i)))) =
fun i =>
(permT id β―)
((prodT ((evalT (Fin.last n) i) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm i))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2
funext Ο e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iΟ:basisIdx ((c β βe) (Fin.last n))β’ (permT id β―)
((prodT ((evalT (Fin.last n) Ο) ((permT (βe) h0) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) =
(permT id β―)
((prodT ((evalT (Fin.last n) Ο) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2
rw [evalT_permT h0 (Fin.last n) Ο t1, e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iΟ:basisIdx ((c β βe) (Fin.last n))β’ (permT id β―)
((prodT
((permT
(if hi : e (Fin.last n) = 0 then fun j => (e ((Fin.last n).succAbove j)).pred β―
else ((e (Fin.last n)).pred hi).predAbove β βe β (Fin.last n).succAbove)
β―)
((evalT (e (Fin.last n)) ((basisIdxCongr β―) Ο)) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) =
(permT id β―)
((prodT ((evalT (Fin.last n) Ο) ((permT (βe) h0) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2 evalT_permT h0 (Fin.last n) Ο t2, e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iΟ:basisIdx ((c β βe) (Fin.last n))β’ (permT id β―)
((prodT
((permT
(if hi : e (Fin.last n) = 0 then fun j => (e ((Fin.last n).succAbove j)).pred β―
else ((e (Fin.last n)).pred hi).predAbove β βe β (Fin.last n).succAbove)
β―)
((evalT (e (Fin.last n)) ((basisIdxCongr β―) Ο)) t1)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) =
(permT id β―)
((prodT
((permT
(if hi : e (Fin.last n) = 0 then fun j => (e ((Fin.last n).succAbove j)).pred β―
else ((e (Fin.last n)).pred hi).predAbove β βe β (Fin.last n).succAbove)
β―)
((evalT (e (Fin.last n)) ((basisIdxCongr β―) Ο)) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2
evalT_eq (e (Fin.last n)) hlast e_f k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = iΟ:basisIdx ((c β βe) (Fin.last n))β’ (permT id β―)
((prodT
((permT
(if hi : e (Fin.last n) = 0 then fun j => (e ((Fin.last n).succAbove j)).pred β―
else ((e (Fin.last n)).pred hi).predAbove β βe β (Fin.last n).succAbove)
β―)
((evalT (e (Fin.last n)) ((basisIdxCongr β―) Ο)) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) =
(permT id β―)
((prodT
((permT
(if hi : e (Fin.last n) = 0 then fun j => (e ((Fin.last n).succAbove j)).pred β―
else ((e (Fin.last n)).pred hi).predAbove β βe β (Fin.last n).succAbove)
β―)
((evalT (e (Fin.last n)) ((basisIdxCongr β―) Ο)) t2)))
((basis ![(c β βe) (Fin.last n)]) (ComponentIdx.single.symm Ο))) k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2] k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2 k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 = t2
rw [β sub_eq_zero, k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ t1 - t2 = 0 All goals completed! π β permT_eq_zero_iff h0, k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ (permT (βe) h0) (t1 - t2) = 0 All goals completed! π map_sub, k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ (permT (βe) h0) t1 - (permT (βe) h0) t2 = 0 All goals completed! π hperm, k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ (permT (βe) h0) t2 - (permT (βe) h0) t2 = 0 All goals completed! π sub_self k:Typeinstββ΅:CommRing 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 bn:βc:Fin (n + 1) β Ct1:S.Tensor ct2:S.Tensor ci:Fin (n + 1)h:β (Ο : basisIdx (c i)), (evalT i Ο) t1 = (evalT i Ο) t2evalT_eq:β (j : Fin (n + 1)), j = i β β (Ο : basisIdx (c j)), (evalT j Ο) t1 = (evalT j Ο) t2e:Fin (n + 1) β Fin (n + 1) := Equiv.swap i (Fin.last n)h0:IsReindexing c (c β βe) βehlast:e (Fin.last n) = ihperm:(permT (βe) h0) t1 = (permT (βe) h0) t2β’ 0 = 0 All goals completed! π] All goals completed! π