EliminateDueSymmetries removes parts of expression, which are zero because of the symmetries.EliminateDueSymmetries does not perform any structural simplifications (expand, eliminate metrics etc.), it is just using symmetries of expression. Simplify expression where symmetric tensor is contracted with antisymmetric:
setAntiSymmetric 'f_mn' //g_mn is symmetric metric tensor println EliminateDueSymmetries >> 'f_mn * g^mn'.t
> 0
EliminateDueSymmetries also checks symmetries that follows from the structure of expressions:
println EliminateDueSymmetries >> '(t_amn - t_anm) * g^mn'.t
> 0
EliminateDueSymmetries works with expressions with arbitrary complexity:
addSymmetry 'R_abc', -[1, 0, 2].p addSymmetry 'A_ab', [1, 0].p def t = '((R_abc*A_de + R_bde*A_ac)*A^ce + R_adb)*(A_mf*R^mad - A_fm*R^dma)'.t println EliminateDueSymmetries >> t
> 0
EliminateDueSymmetries applies to each part of expression:
def t = 'F_mn + g_mn*(A^mn - A^nm)'.t println EliminateDueSymmetries >> t
> F_mn