Imports
Contractions on basis tensors
@[expose] public sectionset_option backward.isDefEq.respectTransparency false in
lemma Pure.dropPair_basisVector {n : ℕ} {c : Fin (n + 1 + 1) → C}
{i j : Fin (n + 1 + 1)} (hij : i ≠ j) (b : ComponentIdx c) :
Pure.dropPair i j hij (basisVector c b) =
basisVector (S := S) (c ∘ Fin.succSuccAbove i j) fun m => b (Fin.succSuccAbove i j m) := k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b✝:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep b✝n:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i ≠ jb:ComponentIdx c⊢ dropPair i j hij (basisVector c b) = basisVector (c ∘ i.succSuccAbove j) fun m => b (i.succSuccAbove j m)
k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b✝:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep b✝n:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)hij:i ≠ jb:ComponentIdx cl:Fin n⊢ dropPair i j hij (basisVector c b) l = basisVector (c ∘ i.succSuccAbove j) (fun m => b (i.succSuccAbove j m)) l
All goals completed! 🐙attribute [-simp] LinearEquiv.cast_applyk:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)b':ComponentIdx chd:¬dropPair i j b' = φb'':↥φ.DropPairSectiona✝:b'' ∈ Finset.univ⊢ ↑b'' ≠ b'
exact fun h => hd (h ▸ (Finset.mem_filter.mp b''.2).2)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) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) 0)) φ =
∑ b', ((basis c).repr 0) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) simpAll 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) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∀ (r : k) (t : S.Tensor c),
((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t)) φ =
∑ b',
((basis c).repr t) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) →
((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) (r • t))) φ =
∑ b',
((basis c).repr (r • t)) ↑b' *
(S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) intro r t h1k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt✝:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)r:kt:S.Tensor ch1:((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t)) φ =
∑ b', ((basis c).repr t) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j)))⊢ ((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) (r • t))) φ =
∑ b',
((basis c).repr (r • t)) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j)))
simp only [map_smul, Finsupp.coe_smul, Pi.smul_apply, smul_eq_mul, h1, Finset.mul_sum,
mul_assoc]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) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∀ (t1 t2 : S.Tensor c),
((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t1)) φ =
∑ b',
((basis c).repr t1) ↑b' *
(S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) →
((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t2)) φ =
∑ b',
((basis c).repr t2) ↑b' *
(S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) →
((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) (t1 + t2))) φ =
∑ b',
((basis c).repr (t1 + t2)) ↑b' *
(S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) intro t1 t2 h1 h2k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)t1:S.Tensor ct2:S.Tensor ch1:((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t1)) φ =
∑ b', ((basis c).repr t1) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j)))h2:((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t2)) φ =
∑ b', ((basis c).repr t2) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j)))⊢ ((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) (t1 + t2))) φ =
∑ b',
((basis c).repr (t1 + t2)) ↑b' *
(S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j)))
simp only [map_add, Finsupp.coe_add, Pi.add_apply, h1, h2, add_mul, ← Finset.sum_add_distrib]All goals completed! 🐙
lemma contrT_basis_repr_apply_eq_sum_fin {n : ℕ} {c : Fin (n + 1 + 1) → C} {i j : Fin (n + 1 + 1)}
(h : i ≠ j ∧ S.τ (c i) = c j) (t : Tensor S c)
(φ : ComponentIdx (c ∘ Fin.succSuccAbove i j)) :
(basis (c ∘ Fin.succSuccAbove i j)).repr (contrT n i j h t) φ =
∑ (x1 : basisIdx (c i)), ∑ (x2 : basisIdx (c j)),
(basis c).repr t (DropPairSection.ofFinEquiv h.1 φ (x1, x2)).1 *
((S.contr (c i))
(b (c i) x1 ⊗ₜ[k] b (S.τ (c i)) (basisIdxCongr (byk:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)x1:basisIdx (c i)x2:basisIdx (c j)⊢ c j = S.τ (c i) rw [h.2k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)x1:basisIdx (c i)x2:basisIdx (c j)⊢ c j = c jAll goals completed! 🐙]All goals completed! 🐙) x2))) := byk:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ((basis (c ∘ i.succSuccAbove j)).repr ((contrT n i j h) t)) φ =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))
rw [contrT_basis_repr_apply h t φ,k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ b', ((basis c).repr t) ↑b' * (S.contr (c i)) ((b (c i)) (↑b' i) ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) (↑b' j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ x,
∑ y,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) *
(S.contr (c i))
((b (c i)) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) i) ⊗ₜ[k]
(b (S.τ (c i))) ((basisIdxCongr ⋯) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2)) ← (DropPairSection.ofFinEquiv h.1 φ).sum_comp,k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ i_1,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) i_1) *
(S.contr (c i))
((b (c i)) (↑((DropPairSection.ofFinEquiv ⋯ φ) i_1) i) ⊗ₜ[k]
(b (S.τ (c i))) ((basisIdxCongr ⋯) (↑((DropPairSection.ofFinEquiv ⋯ φ) i_1) j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ x,
∑ y,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) *
(S.contr (c i))
((b (c i)) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) i) ⊗ₜ[k]
(b (S.τ (c i))) ((basisIdxCongr ⋯) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))
Fintype.sum_prod_typek:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ x,
∑ y,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) *
(S.contr (c i))
((b (c i)) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) i) ⊗ₜ[k]
(b (S.τ (c i))) ((basisIdxCongr ⋯) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ x,
∑ y,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) *
(S.contr (c i))
((b (c i)) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) i) ⊗ₜ[k]
(b (S.τ (c i))) ((basisIdxCongr ⋯) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))]k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep bn:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jt:S.Tensor cφ:ComponentIdx (c ∘ i.succSuccAbove j)⊢ ∑ x,
∑ y,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) *
(S.contr (c i))
((b (c i)) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) i) ⊗ₜ[k]
(b (S.τ (c i))) ((basisIdxCongr ⋯) (↑((DropPairSection.ofFinEquiv ⋯ φ) (x, y)) j))) =
∑ x1,
∑ x2,
((basis c).repr t) ↑((DropPairSection.ofFinEquiv ⋯ φ) (x1, x2)) *
(S.contr (c i)) ((b (c i)) x1 ⊗ₜ[k] (b (S.τ (c i))) ((basisIdxCongr ⋯) x2))
simpAll goals completed! 🐙lemma contrT_basis {n : ℕ} {c : Fin (n + 1 + 1) → C} {i j : Fin (n + 1 + 1)}
(h : i ≠ j ∧ S.τ (c i) = c j) (b : ComponentIdx (S := S) c) :
contrT n i j h (basis c b) =
Pure.contrPCoeff i j h (Pure.basisVector c b) •
basis (c ∘ Fin.succSuccAbove i j) (b.dropPair i j) := byk:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b✝:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep b✝n:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jb:ComponentIdx c⊢ (contrT n i j h) ((basis c) b) =
Pure.contrPCoeff i j h (Pure.basisVector c b) • (basis (c ∘ i.succSuccAbove j)) (dropPair i j b)
simp only [basis_apply, contrT_pure, Pure.contrP, Pure.dropPair_basisVector]k:Typeinst✝⁵:CommRing kC:TypeG:Typeinst✝⁴:Group GV:C → Typeinst✝³:(c : C) → AddCommGroup (V c)inst✝²:(c : C) → Module k (V c)basisIdx:C → Typeinst✝¹:(c : C) → Fintype (basisIdx c)inst✝:(c : C) → DecidableEq (basisIdx c)rep:(c : C) → Representation k G (V c)b✝:(c : C) → Basis (basisIdx c) k (V c)S:TensorSpecies k C G V basisIdx rep b✝n:ℕc:Fin (n + 1 + 1) → Ci:Fin (n + 1 + 1)j:Fin (n + 1 + 1)h:i ≠ j ∧ S.τ (c i) = c jb:ComponentIdx c⊢ Pure.contrPCoeff i j h (Pure.basisVector c b) •
(Pure.basisVector (c ∘ i.succSuccAbove j) fun m => b (i.succSuccAbove j m)).toTensor =
Pure.contrPCoeff i j h (Pure.basisVector c b) • (Pure.basisVector (c ∘ i.succSuccAbove j) (dropPair i j b)).toTensor
rflAll goals completed! 🐙