problem with Gdelta

83 views
Skip to first unread message

Christopher Herzog

unread,
Aug 7, 2015, 12:15:20 AM8/7/15
to xAct Tensor Computer Algebra
Hi.

I'm having a problem with using Gdelta to compute the Gauss-Bonnet term.
While the command

Gdelta[-a1, -a2, -a3, -a4, b1, b2, b3, b4] RiemannCD[a1, 
   a2, -b1, -b2] RiemannCD[a3, a4, -b3, -b4] // CollectTensors

produces the Gauss-Bonnet term with Riemann^2:Ricci^2:RicciScalar^2 in the correct ratio
4:(-16):4, the seemingly identical command

Gdelta[-a1, -b1, -a2, -b2, c1, d1, c2, d2] RiemannCD[a1, 
   b1, -c1, -d1] RiemannCD[a2, b2, -c2, -d2] // CollectTensors

produces the the curvature squared terms in the incorrect ratio (-4):8:(-4).

(The preamble, before issuing the above two commands, in my Mathematica notebook is 

Quit
<< xAct`xTensor`
<< xAct`xTras`;
DefManifold[M, 
  dim, {a, b, c, d, a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, a4, b4}];
DefMetric[-1, g[-a, -b], CD, {";", "\[EmptyDownTriangle]"}];

)

Best,

Chris

Leo Stein

unread,
Aug 7, 2015, 5:50:18 PM8/7/15
to Christopher Herzog, xAct Tensor Computer Algebra
Hi Chris,

I agree that you have found a bug. To make it clearer what is going on, we can compare what happens when the contraction with Gdelta is automatically expanded (using an internal function contractGdeltaTimes) versus what happens if first expanding with ExpandGdelta:
In[] := 
  Gdelta[-a1, -a2, -a3, -a4, b1, b2, b3, b4]
  RiemannCD[a1, a2, -b1, -b2] RiemannCD[a3, a4, -b3, -b4]
  == (Gdelta[-a1, -a2, -a3, -a4, b1, b2, b3, b4] // 
      ExpandGdelta ) RiemannCD[a1, a2, -b1, -b2]
  RiemannCD[a3, a4, -b3, -b4] // ContractMetric // ToCanonical
Out[] = True
In[] :=
  Gdelta[-a1, -b1, -a2, -b2, c1, d1, c2, d2]
  RiemannCD[a1, b1, -c1, -d1] RiemannCD[a2, b2, -c2, -d2]
  == (Gdelta[-a1, -b1, -a2, -b2, c1, d1, c2, d2] // 
      ExpandGdelta) RiemannCD[a1, b1, -c1, -d1]
  RiemannCD[a2, b2, -c2, -d2] // ContractMetric // ToCanonical
 Out[] = (not true)

The function ExpandGdelta is so simple that it is clearly not at fault. Therefore there is a bug within contractGdeltaTimes, but tracking it down requires understanding that code.

I you would like to disable that code, you can write:
Gdelta /: (f_ /; f === Times)[expr1___, gdelta_Gdelta, expr2___] =.
after you load xAct`xTensor`. This will be slightly slower and you will have to explicitly call ExpandGdelta whenever you want to expand it, but at least it will be correct until somebody finds the ultimate cause of this bug.

L

--
You received this message because you are subscribed to the Google Groups "xAct Tensor Computer Algebra" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xact+uns...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages