Contractions on tensors #
contrT #
noncomputable def
TensorSpecies.Tensor.contrT
{k : Type}
[CommRing k]
{G : Type}
[Group G]
{S : TensorSpecies k G}
(n : ℕ)
{c : Fin (n + 1 + 1) → S.C}
(i j : Fin (n + 1 + 1))
(hij : i ≠ j ∧ S.τ (c i) = c j)
:
For c : Fin (n + 1 + 1) → S.C
, i j : Fin (n + 1 + 1)
with dual color, and a tensor
t : Tensor S c
, contrT i j _ t
is the tensor
formed by contracting the i
th index of t
with the j
th index.
Equations
- TensorSpecies.Tensor.contrT n i j hij = PiTensorProduct.lift (TensorSpecies.Tensor.Pure.contrPMultilinear i j hij)
Instances For
theorem
TensorSpecies.Tensor.contrT_congr
{k : Type}
[CommRing k]
{G : Type}
[Group G]
{S : TensorSpecies k G}
{n : ℕ}
{c : Fin (n + 1 + 1) → S.C}
{i j : Fin (n + 1 + 1)}
{hij : i ≠ j ∧ S.τ (c i) = c j}
(i' j' : Fin (n + 1 + 1))
(t : S.Tensor c)
(hii' : i = i' := by decide)
(hjj' : j = j' := by decide)
:
@[simp]
theorem
TensorSpecies.Tensor.contrT_permT
{k : Type}
[CommRing k]
{G : Type}
[Group G]
{S : TensorSpecies k G}
{n n1 : ℕ}
{c : Fin (n + 1 + 1) → S.C}
{c1 : Fin (n1 + 1 + 1) → S.C}
(i j : Fin (n1 + 1 + 1))
(hij : i ≠ j ∧ S.τ (c1 i) = c1 j)
(σ : Fin (n1 + 1 + 1) → Fin (n + 1 + 1))
(hσ : PermCond c c1 σ)
(t : S.Tensor c)
:
theorem
TensorSpecies.Tensor.contrT_comm
{k : Type}
[CommRing k]
{G : Type}
[Group G]
{S : TensorSpecies k G}
{n : ℕ}
{c : Fin (n + 1 + 1 + 1 + 1) → S.C}
(i1 j1 : Fin (n + 1 + 1 + 1 + 1))
(i2 j2 : Fin (n + 1 + 1))
(hij1 : i1 ≠ j1 ∧ S.τ (c i1) = c j1)
(hij2 : i2 ≠ j2 ∧ S.τ (c (Pure.dropPairEmb i1 j1 i2)) = c (Pure.dropPairEmb i1 j1 j2))
(t : S.Tensor c)
:
let i2' := Pure.dropPairEmb i1 j1 i2;
let j2' := Pure.dropPairEmb i1 j1 j2;
let_fun hi2j2' := ⋯;
let i1' := Pure.dropPairEmbPre i2' j2' hi2j2' i1 ⋯;
let j1' := Pure.dropPairEmbPre i2' j2' hi2j2' j1 ⋯;
(contrT n i2 j2 hij2) ((contrT (n + 1 + 1) i1 j1 hij1) t) = (permT id ⋯) ((contrT n i1' j1' ⋯) ((contrT (n + 1 + 1) i2' j2' ⋯) t))