## TableauSymmetry

Gives a tensor a generic Young tableau symmetry.

Gives a tensor a generic Young tableau symmetry, as indicated by the arguments.
Takes lists of two key-value pairs as arguments, indicating the
shape of the Young tableau and the index slots associated to each box
in the tableau. For instance
R_{a b c d}::TableauSymmetry( shape={2,2}, indices={0,2,1,3} );

\(\displaystyle{}\text{Attached property TableauSymmetry to }R_{a b c d}.\)

yields the symmetries of the Riemann tensor, that is, the symmetries of a Young tableau
with two rows of two boxes each. Note that indices are
counted from zero. You can see that this works by showing that the cyclic identity
holds, using

`young_project_tensor`

,
ex:= R_{a b c d} + R_{a c d b} + R_{a d b c};

\(\displaystyle{}R_{a b c d}+R_{a c d b}+R_{a d b c}\)

young_project_tensor(_);

\(\displaystyle{}0\)

Simple symmetry is imposed by using a tableau with one row, while simple anti-symmetry
corresponds to a tableau with one column. See

`Symmetric`

and `AntiSymmetric`

for
examples.