a field-theory motivated approach to computer algebra

## young_project_tensor

Project tensors with their Young projector.
Project tensors with their Young projection operator. This works for simple symmetric or anti-symmetric objects, as in
A_{m n}::Symmetric. ex:= A_{m n} A_{m p};
$$\displaystyle{}A_{m n} A_{m p}$$
young_project_tensor(_);
$$\displaystyle{}\left(\frac{1}{2}A_{m n}+\frac{1}{2}A_{n m}\right) \left(\frac{1}{2}A_{m p}+\frac{1}{2}A_{p m}\right)$$
but more generically works for any tensor which has a TableauSymmetry property attached to it.
A_{m n p}::TableauSymmetry(shape={2,1}, indices={0,2,1}). ex:= A_{m n p};
$$\displaystyle{}A_{m n p}$$
young_project_tensor(_);
$$\displaystyle{}\frac{1}{3}A_{m n p}+\frac{1}{3}A_{p n m} - \frac{1}{3}A_{n m p} - \frac{1}{3}A_{p m n}$$
When the parameters modulo_monoterm is set to True, the resulting expression will be simplified using the monoterm symmetries of the tensor,
A_{m n p}::TableauSymmetry(shape={2,1}, indices={0,2,1}). ex:= A_{m n p};
$$\displaystyle{}A_{m n p}$$
young_project_tensor(_, modulo_monoterm=True);
$$\displaystyle{}\frac{2}{3}A_{m n p} - \frac{1}{3}A_{n p m}+\frac{1}{3}A_{m p n}$$
(in this example, the tensor is anti-symmetric in the indices 0 and 1, hence the simplification compared to the previous example).