ChristoffelSym[z_] := Module[{g, x, d, ginv, res}, {g, x} = z;
d = Length[x]; ginv = Simplify[Inverse[g]];
res = Table[(1/2)*
Sum[ginv[[a,
b]]*(D[g[[b, u]], x[[v]]] + D[g[[b, v]], x[[u]]] -
D[g[[u, v]], x[[b]]]), {b, 1, d}], {a, 1, d}, {u, 1, d}, {v,
1, d}];
FullSimplify[res]]
RiemannCurvature[z_] := Module[{g, x, d, C, res}, {g, x} = z;
d = Length[x]; C = ChristoffelSym[z];
res = Table[
D[C[[a, b, v]], x[[u]]] - D[C[[a, b, u]], x[[v]]] +
Sum[C[[a, s, u]]*C[[s, b, v]], {s, 1, d}] -
Sum[C[[a, s, v]]*C[[s, b, u]], {s, 1, d}], {a, 1, d}, {b, 1,
d}, {u, 1, d}, {v, 1, d}];
Simplify[res]]
ContractMi[R_] := Module[{d, res}, d = Dimensions[R, 1][[1]];
res = Table[Sum[R[[u, a, u, b]], {u, 1, d}], {a, 1, d}, {b, 1, d}];
Simplify[res]]
KretschmannScalar[z_] := Module[{go, x, n, R, gi, res}, {go, x} = z;
R = RiemannCurvature[z];
n = Length[x];
gi = Inverse[go];
res = Sum[
R[[a, b, c, d]]*R[[e, f, g, h]]*go[[e, a]]*gi[[f, b]]*gi[[g, c]]*
gi[[h, d]], {e, 1, n}, {f, 1, n}, {g, 1, n}, {h, 1, n}, {a, 1,
n}, {b, 1, n}, {c, 1, n}, {d, 1, n}];
Simplify[res]]
RicciT[z_] := ContractMi[RiemannCurvature[z]]
RicciS2[g_, rt_] := Module[{d, ginv, res}, d = Dimensions[g, 1][[1]];
ginv = Inverse[g];
res = Sum[ginv[[u, v]]*rt[[u, v]], {u, 1, d}, {v, 1, d}];
Simplify[res]]
RicciS[z_] := Module[{x, g, d, rt, ginv, res}, {g, x} = z;
d = Length[x]; rt = RicciT[z];
ginv = Inverse[g];
res = Sum[ginv[[u, v]]*rt[[u, v]], {u, 1, d}, {v, 1, d}];
FullSimplify[res]]
EisteinTensor[z_] := Module[{x, g, d, ginv, rt, rs, res}, {g, x} = z;
d = Length[x]; ginv = Inverse[g];
rt = RicciT[z];
rs = RicciS2[g, rt];
res = rt - (1/2) g*rs;
Simplify[res]]
sm = DiagonalMatrix[{ A[r], B[r], r^2, r^2 Sin[[Theta]]^2}]
xx = {t, r, [Theta], [Phi]}
ricci = RicciT[{sm, xx}]
DSolve [ {ricci[[1, 1]] == 0, ricci[[2, 2]] == 0}, {A, B}, {r}]