Riemann tensor first order perturbation

46 views
Skip to first unread message

Petr Tretyakov

unread,
Feb 7, 2026, 9:18:46 AM (6 days ago) Feb 7
to xAct Tensor Computer Algebra
Dear All. (But maybe rather Developers.)
I'm interested in perturbation in GR. So I start from the simplest formula for first order perturbation for Riemann tensor. By using xPert I wrote Perturbation[ RiemannCD[\[Alpha], -\[Beta], -\[Mu], -\[Nu]] ] after putting additional options // ExpandPerturbation // ContractMetric // ToCanonical
I obtain some answer.

 In principle the result is very well known and may found in almost any classical book. For instance in Landau-Lifshitz(LL) it contain 6 terms like \nabla\nabla h_{ik} -- where    h_{ik} -- first order perturbation of metric tensor. In "Introduction to Quantum Field Theory with Applications to Quantum Gravity", Buchbinder, Shapiro, 2021 (BS) p.435 this result contain 4 terms with second cov. derivatives and two like h_{ik}Rmn, where Rmn--Riemann tensor (due to commutation relation apply). I recalculate that results by my own hands, and know that it is correct. 

The result which is produced by the Program is very different. Ok -- I try to apply some additional specifications like  // ExpandPerturbation // SortCovDs // Simplification //
    ScreenDollarIndices // ContractMetric // Simplification // ToCanonical

The result is the next: four terms with second derivatives totally  coincide with four terms from BS, but instead of two terms  like h_{ik}Rmn Program generate 11(!)
Any my attempt to simplify its to known form was unsuccessfull. This very strange  simplification. I trust that Program works correctly, but how it is possible to obtain results in more convenient form?

Reguards,
Petr

Juan Margalef

unread,
Feb 9, 2026, 7:02:11 PM (4 days ago) Feb 9
to xAct Tensor Computer Algebra
In order to help you, we would need a minimal working example with your code, your result and the expected result. Otherwise it is very hard to give you useful feedback.

Petr Tretyakov

unread,
Feb 10, 2026, 12:39:55 PM (3 days ago) Feb 10
to xAct Tensor Computer Algebra
Ok. The code is next

Needs["Xact`xTensor`"]
Needs["xAct`xPert`"]
DefManifold[M4, 4, {l, m, n, r, s, a, b, c, d, i, k}]
DefMetric[-1, g[-m, -n], CD];
DefMetricPerturbation[g, h1, \[Epsilon]]
Perturbation[ RiemannCD[a, -b, -m, -n] ] // ExpandPerturbation // ContractMetric // ToCanonical
%%%%%%%%%%%%
The result is:
%%
h1[ -n, c]   RiemannCD[a, -b, -m, -c] + h1[ a, c]   RiemannCD[-b, -c, -m, -n] - 1/2  CD[a]@CD[-b]@h1[ -m, -n] - 1/2  CD[a]@CD[-m]@h1[ -b, -n] + 1/2  CD[a]@CD[-n]@h1[ -b, -m] + 1/2  CD[-b]@CD[a]@h1[ -m, -n] + 1/2  CD[-b]@CD[-m]@h1[ a, -n] - 1/2  CD[-b]@CD[-n]@h1[ a, -m]
%%%%%%%%%%%%
After putting 
%%%%%%%%%%%%
Perturbation[ RiemannCD[a, -b, -m, -n] ] // ExpandPerturbation // SortCovDs // Simplification // ScreenDollarIndices // ContractMetric // Simplification // ToCanonical
%%%%%%%%%%%%
The result is: A+B, where
%%
A= -(1/2)  CD[-m]@CD[a]@h1[ -b, -n] + 1/2  CD[-m]@CD[-b]@h1[ a, -n] + 1/2  CD[-n]@CD[a]@h1[ -b, -m] - 1/2  CD[-n]@CD[-b]@h1[ a, -m]
%%
B=1/2  h1[ -n, c]   RiemannCD[a, -b, -m, -c] - 1/2  h1[-m, c]   RiemannCD[a, -b, -n, -c] + 1/2  h1[ -n, c]   RiemannCD[a, -c, -b, -m] - 1/2  h1[ -m, c]   RiemannCD[a, -c, -b, -n] - 1/2  h1[ -n, c]   RiemannCD[a, -m, -b, -c] - 1/2  h1[ -b, c]   RiemannCD[a, -m, -n, -c] + 1/2  h1[ -m, c]   RiemannCD[a, -n, -b, -c] + 1/2  h1[ -b, c]   RiemannCD[a, -n, -m, -c] + h1[ a, c]   RiemannCD[-b, -c, -m, -n] + 1/2  h1[a, c]   RiemannCD[-b, -m, -n, -c] - 1/2  h1[a, c]   RiemannCD[-b, -n, -m, -c]
%%

If we take this result from the book we find that A -- is correct, whereas instead of B must be just B*= 1/2  h1[r, -b]   RiemannCD[a, -r, -m, -n]  - 1/2  h1[-r, a]   RiemannCD[r, -b, -m, -n] -- two terms instead 11.

(In all expressions imply   h1[ -a, -b] = h1[LI[1], -a, -b], I delete LI[1] for more readability )

Juan Margalef

unread,
Feb 10, 2026, 1:50:06 PM (3 days ago) Feb 10
to xAct Tensor Computer Algebra
I don't have the book at hand so I cannot compare, but my I guess is that the difference is due to a problem with the conventions. If you define a (non-metric) covariant derivative:

DefCovD[der[-a], {";", "D"}]

The Riemann tensor Riemannder has the first three indices down and the last index up as you can check using:

SlotsOfTensor[Riemannder]
{-TangentM4, -TangentM4, -TangentM4, -TangentM4}

If the covariant derivative is the Levi-Civita one, all indices are down (to implement better some additional symmetries):

SlotsOfTensor[RiemannCD]
{-TangentM4, -TangentM4, -TangentM4, -TangentM4}

When you write Perturbation[ RiemannCD[a, -b, -m, -n] ] you are actually writing the same as Perturbation[g[a,c] g[-n,-k] RiemannCD[-c, -b, -m, k] ] so you have additional terms coming from the perturbations of the metric and its inverse. Check if

Perturbation[RiemannCD[-a, -b, -m, n]]

coincide with the formula of the book.

Best,
Juan Margalef

Petr Tretyakov

unread,
Feb 11, 2026, 6:02:58 AM (2 days ago) Feb 11
to xAct Tensor Computer Algebra

I think the problem is deeper. For 
Perturbation[RiemannCD[-a, -b, -m, n]]

It produce 10 terms instead of 2, and not coincide with the known answer 

Juan Margalef

unread,
Feb 11, 2026, 4:45:05 PM (2 days ago) Feb 11
to xAct Tensor Computer Algebra

Petr Tretyakov

unread,
Feb 12, 2026, 2:15:08 PM (20 hours ago) Feb 12
to xAct Tensor Computer Algebra
Dear  Juan,
Thank you very much for your assistance!

Best
Petr
Reply all
Reply to author
Forward
0 new messages