• 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

See also