I have a tensor $t$ with components $t_{i_1 i_2 \dots i_n}$. The tensor $t$ has some index symmetries $\{s_i\}_{i=1}^m$. Consider now all index permutations $p = \{\{1,2,3,\dots,n\},\{2,1,3,\dots,n\},\dots\}$. I consider a permutations $p_i$ as linear independent, if the application of the permutation on the tensor $\pi(t,p_i)$ delivers a tensor which is not linear dependent of $t$, i.e., $\nexists \alpha \in \mathbb{R}: \pi(t,p_i) \neq \alpha t$.
Question: how do you efficiently extract the set of linear independent permutations?
My approach until now is to use the symbolic tools in Mathematica. For example, I will generate a symbolic tensor t
(just as one example)
$Assumptions = {
Element[t1, Arrays[{3, 3, 3}, Reals, Antisymmetric[{1, 2, 3}]]]
, Element[t2, Arrays[{3, 3}, Reals, Symmetric[{1, 2}]]]
};
t = TensorProduct[t1, t2, t2];
ts = TensorSymmetry@t
{{Cycles[{{1, 2}}], -1}, {Cycles[{{2, 3}}], -1}, {Cycles[{{4, 5}}], 1}, {Cycles[{{6, 7}}], 1}, {Cycles[{{4, 6}, {5, 7}}], 1}}
where ts
shows the index symmetries. Now, from all possible permutations p
p = Permutations@Range@TensorRank@t;
I will select the linear independent permutations as follows (the plus and minus cases arise due to the antisymmetric symmetries of t1
defined as an example above)
pli = Select[p,
Not[TensorReduce@TensorTranspose[t, #] === t ||
TensorReduce@TensorTranspose[t, #] === -t] &];
You can then see
Length@p
Length@pli
5040
4992
that, as expected, you can eliminate some of the p
's, in this case 48 = 5040-4992 permutations were linearly dependent. Sadly, I have pretty large tensors and I am looking for efficient ways to improve the search for linear independent permutations. Any ideas? Thanks!