6.1. InvSimplify

Once we have converted any Riemann expression into invariants with heads RInv and DualRInv, then we can "simplify" the expression by using the multiterm symmetries described above (steps 2, 3 and 4 of the simplification process). We use quotes because in many cases a single monomial is expanded into a large polynomial, its canonical form in the basis we have chosen, and this can be hardly called simplification. However, if an expression is equivalent to zero, the function InvSimplify will find it.

Example:

In[103]:=

rinv = RInv[metric][{0, 0, 0, 0, 0}, 100]

Out[103]=

I_00000,100

At level 1 nothing happens:

In[104]:=

InvSimplify[rinv, 1]

Out[104]=

I_00000,100

At level 2 the cyclic identity is used. Note that the degree does not change, but the indexes of the invariants decrease:

In[105]:=

InvSimplify[rinv, 2]

Out[105]=

-I_00000,97 + I_00000,99

We skip levels 3 and 4 becasue there are no derivatives in this example. At level 5 we use dimensionally dependent identities for dimension 4:

In[106]:=

InvSimplify[rinv, 5]//Expand

Out[106]=

At level 6 we use signature dependent identities expressing RInv[{0,0,0,0}, 21] in terms of DualRInv[{0,0}, 2] squared:

In[107]:=

InvSimplify[rinv, 6]//Expand

Out[107]=

Another example, with derivatives and involving dual relations

In[108]:=

diffrinv = RInv[metric][{0, 0, 1, 1}, 800]

Out[108]=

I_0011,800

In[109]:=

InvSimplify[diffrinv, 2]

Out[109]=

-I_0011,793/2

In[110]:=

InvSimplify[diffrinv, 3]

Out[110]=

-I_0011,368/2 + I_0011,369/2

In[111]:=

InvSimplify[diffrinv, 4]

Out[111]=

-I_0011,368/2 + I_0011,369/2

In[112]:=

InvSimplify[diffrinv, 5]

Out[112]=

In[113]:=

InvSimplify[diffrinv, 6]

Out[113]=

-1/16 D_00,2 D_11,1 - I_0011,367/2

Simplification of a dual invariant

In[114]:=

dualrinv = DualRInv[metric][{1, 3}, 3]

Out[114]=

D_13,3

In[115]:=

InvSimplify[dualrinv, 2]

Reading DualInvRules for step 2 and case  {1, 3}

Out[115]=

D_13,3

In[116]:=

InvSimplify[dualrinv, 3]

Reading DualInvRules for step 3 and case  {1, 3}

Out[116]=

D_13,1/2

In[117]:=

InvSimplify[dualrinv, 4]

Reading DualInvRules for step 4 and case  {1, 3}

Out[117]=

0

By default, InvSimplify applies the first 6 steps. This behaviour can be changed with the following global variable

In[118]:=

$InvSimplifyLevel = 5

Out[118]=

5

In[119]:=

InvSimplify[rinv]

Out[119]=

In[120]:=

$InvSimplifyLevel = 2

Out[120]=

2

In[121]:=

InvSimplify[rinv]

Out[121]=

-I_00000,97 + I_00000,99

We return to the default value

In[122]:=

$InvSimplifyLevel = 6

Out[122]=

6

Covariant derivatives commute when acting on scalars, which would in principle give an extra permutation symmetry. This symmetry is, however, not applied at step 1, but at step 4, along with the general rules for reordering of derivatives. For example, the following two invariants are obviously equal

In[123]:=

InvToRiemann[RInv[metric][{4}, 2]]

Reading InvRules for step 1 and case  {4}

Out[123]=

Scalar[R_ (  ab     ; d ; c)^(ab   ; c ; d    )]

In[124]:=

InvToRiemann[RInv[metric][{4}, 3]]

Out[124]=

Scalar[R_ (  ab     ; c ; d)^(ab   ; c ; d    )]

Nevertheless, they are considered different objects until step 4

In[125]:=

InvSimplify[RInv[metric][{4}, 2] - RInv[metric][{4}, 3], 3]

Out[125]=

I_4,2 - I_4,3

In[126]:=

InvSimplify[RInv[metric][{4}, 2] - RInv[metric][{4}, 3], 4]

Out[126]=

0


Created by Mathematica  (May 16, 2008) Valid XHTML 1.1!