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. The shape
argument holds a list of row lengths, so that
e.g. shape={3,2}
indicates a tableau with 3 boxes in the first row and
2 boxes in the second.
To see this in action, consider 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}.\)
which 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. You can also obtain the same result using TableauSymmetry
:g_{a b}::TableauSymmetry(shape={2}, indices={0,1});
A_{a b}::TableauSymmetry(shape={1,1}, indices={0,1});
ex:= g_{b a} + A_{b a};
canonicalise(_);
\(\displaystyle{}\text{Attached property TableauSymmetry to }g_{a b}.\)
\(\displaystyle{}\text{Attached property TableauSymmetry to }A_{a b}.\)
\(\displaystyle{}g_{b a}+A_{b a}\)
g_{b a} + A_{b a}
\(\displaystyle{}g_{a b}-A_{a b}\)
g_{a b}-A_{a b}
The first two lines declare two two-index tensors, $g_{a b}$ symmetric, $A_{a b}$ anti-symmetric, as the last line confirms.