In Sasaki's original 1958 paper defining his metric on the tangent bundle $TM$, he gives expressions for the Christoffel symbols, in terms only of quantities from $M$ (pg. 352).
For the simple example of a 2D surface $(x,y,f(x,y))$ where the metric tensor is the first fundamental form, I wanted to compute the Christoffel symbols of the associated Sasaki metric. Unfortunately, I am unable to reproduce his results, unless i am misreading them.
My question is: what are the Christoffel symbols of $TM$ for the 2D surface defined above?
Here are the details of what I'm trying to do. Consider the surface defined by $z=f(x,y)$ as a manifold $(M,g)$ with metric tensor given by $$ g = \begin{bmatrix} 1 + f_x^2 & f_xf_y\\ f_xf_y & 1 + f_y^2 \end{bmatrix} $$ where $\partial_x f = f_x$ and $\partial_y f = f_y$. Let $n=2$ be the dimension. Given $g$, we can compute the Christoffel symbols $\Gamma_{jk}^i$ and Riemann curvature tensor $R_{ijk\ell}$. (These correspond to the "manual" quantities in the code below).
Next, consider the tangent bundle $TM$ (where $M$ is as just above). We want to consider $TM$ as a Riemannian manifold $(\hat{M},g_\text{Sasaki})=(TM,\hat{g})$, where $\hat{g}$ is the Sasaki metric, defined via: $$ \begin{cases} \displaystyle\hat{g}_{jk} = g_{jk} + g_{\beta \gamma}\Gamma_{\mu j}^\beta \Gamma_{\eta k}^\gamma v^\mu v^\eta \displaystyle \\ \displaystyle \hat{g}_{j(n+k)} = g_{k\mu}\Gamma_{\lambda j}^\mu v^\lambda\\ \displaystyle\hat{g}_{(n+j)(n+k)} = g_{jk} \end{cases} $$ written in terms of the quantities from the lower "base" manifold $M$, with indices going from $1$ to $2$. $v=(v^1,v^2)$ are coordinates on the tangent space. In this case, $g$ is $2\times 2$, so $\hat{g}$ is $4\times 4$, because $T\hat{M}=TTM$. (As an aside, this is almost directly from Sasaki's paper; hopefully I did not make a notational mistake or misunderstanding. In particular, I translated $[\lambda\;j,k]$ as $g_{k\mu}\Gamma_{\lambda j}^\mu$. Also, I suspect my error may involve $v$, because at no point do I specify what $v$ is in the code).
Overall, my goal is to compute the Christoffel symbols $\hat{\Gamma}$, Riemann tensor $\hat{R}$, Ricci tensor, and Ricci scalar of $(\hat{M},\hat{g})$, i.e. $TM$. However, I can't get my Christoffel symbols to match with the expressions given by Sasaki.
In particular, he writes: \begin{align} %\begin{cases} \hat{\Gamma}^I_{(n+j)(n+k)} &= 0\\ \hat{\Gamma}^i_{(j+n)k} &= \frac{1}{2}R_{kj\lambda}^\ell v^\lambda\\ \hat{\Gamma}^{n+i}_{(n+j)k} &= \Gamma_{jk}^i - \frac{1}{2}\Gamma_{\mu h}^iR_{kj\lambda}^h v^\lambda v^\mu \\ \hat{\Gamma}^{i}_{jk} &= \Gamma_{jk}^i + \frac{1}{2}\left( R_{kh\mu}^\ell\Gamma^h_{\lambda j} + R_{j h \mu}^\ell\Gamma^h_{\lambda k} \right)\\ \hat{\Gamma}_{jk}^{n+i} &= \frac{1}{2}\left( R^\ell_{j\lambda k} + R^\ell_{k\lambda j} + 2\frac{\partial \Gamma_{jk}^i}{\partial x^\lambda} \right)v^\lambda + \frac{1}{2}\Gamma_{\eta h}^h\left( R_{k\mu\ell}^h\Gamma^\ell_{\lambda j} + R_{j\mu\ell}^h\Gamma^\ell_{\lambda k} \right)v^\lambda v^\mu v^\eta %\end{cases} \end{align}
However, when I simply take the coordinates $x,y,v^1,v^2$, compute the expression for $\hat{g}$, and run it through a library to get the Christoffel symbols, it does not match with the values given by the paper. (My current code does not check all of the above expressions, just the first three.) In other words, I compute $g$, $\Gamma$, $R$, and $\hat{g}$ manually (well, actually I computed them separately with the same GR package). Then I compute $\hat{\Gamma}$ via (1) manually with Sasaki's expressions and (2) with a GR library. I then compare the expressions produced each way.
Since, even in this simple case, the calculations are horribly long, here is a script to help in the computations. I used the GR package GRQuick for Mathematica (just paste into the source folder to use). (I figured the math here was more the focus than the Mathematica, else I would have posted there; let me know if that makes sense.)
(** Manually define the tensors for (x,y,f(x,y)) in Cartesian coords **)
ClearAll["Global`*"]
metricM[x_,y_] := Simplify[{
{ 1 + D[ f[x,y], x]^2 , D[ f[x,y], x] D[ f[x,y], y] },
{ D[ f[x,y], x] D[ f[x,y], y] , 1 + D[ f[x,y], y]^2 }
}];
metric = metricM[x,y]
n=2
christoffelManual={{{(Derivative[1, 0][f][x, y]*Derivative[2, 0][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2),
(Derivative[1, 0][f][x, y]*Derivative[1, 1][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)},
{(Derivative[1, 0][f][x, y]*Derivative[1, 1][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2),
(Derivative[0, 2][f][x, y]*Derivative[1, 0][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)}},
{{(Derivative[0, 1][f][x, y]*Derivative[2, 0][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2),
(Derivative[0, 1][f][x, y]*Derivative[1, 1][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)},
{(Derivative[0, 1][f][x, y]*Derivative[1, 1][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2),
(Derivative[0, 1][f][x, y]*Derivative[0, 2][f][x, y])/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)}}}
riemannManual= {{{{0, (Derivative[0, 1][f][x, y]*Derivative[1, 0][f][x, y]*(-Derivative[1, 1][f][x, y]^2 + Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2},
{(Derivative[0, 1][f][x, y]*Derivative[1, 0][f][x, y]*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2, 0}},
{{0, -(((1 + Derivative[0, 1][f][x, y]^2)*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2)},
{((1 + Derivative[0, 1][f][x, y]^2)*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2, 0}}},
{{{0, ((1 + Derivative[1, 0][f][x, y]^2)*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2},
{-(((1 + Derivative[1, 0][f][x, y]^2)*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2), 0}},
{{0, (Derivative[0, 1][f][x, y]*Derivative[1, 0][f][x, y]*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2},
{(Derivative[0, 1][f][x, y]*Derivative[1, 0][f][x, y]*(-Derivative[1, 1][f][x, y]^2 + Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2, 0}}}}
ricciManual= {{-(((1 + Derivative[1, 0][f][x, y]^2)*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2), (Derivative[0, 1][f][x, y]*Derivative[1, 0][f][x, y]*
(-Derivative[1, 1][f][x, y]^2 + Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2},
{(Derivative[0, 1][f][x, y]*Derivative[1, 0][f][x, y]*(-Derivative[1, 1][f][x, y]^2 + Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2,
-(((1 + Derivative[0, 1][f][x, y]^2)*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/
(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2)}}
manualRicciScalar = -((2*(Derivative[1, 1][f][x, y]^2 - Derivative[0, 2][f][x, y]*Derivative[2, 0][f][x, y]))/(1 + Derivative[0, 1][f][x, y]^2 + Derivative[1, 0][f][x, y]^2)^2)
(** Use GRQuick to get Sasaki metric **)
<< "path/to/GRQUICK.m";
(*** Construct Sasaki metric ***)
v = {v1, v2};
upperG[p_,v_,j_,k_] := metric[[j,k]] + Sum[ (* k,j \in {1,2} *)
metric[[beta,gamma]] christoffelManual[[beta,mu,j]]christoffelManual[[gamma,ell,k]]v[[mu]]v[[ell]],
{beta,1,2},{gamma,1,2},{mu,1,2},{ell,1,2}
]
offG[p_,v_,j_,k_] := Sum[
metric[[ell,k]] christoffelManual[[ell,lambda,j]] v[[lambda]],
{lambda,1,2}, {ell,1,2}
]
sasakiGMet[x_,y_,v1_,v2_] := FullSimplify[{
{ upperG[{x,y},{v1,v2},1,1], upperG[{x,y},{v1,v2},1,2], offG[{x,y}, {v1,v2},1,1], offG[{x,y}, {v1,v2},1,2] },
{ upperG[{x,y},{v1,v2},2,1], upperG[{x,y},{v1,v2},2,2], offG[{x,y}, {v1,v2},2,1], offG[{x,y}, {v1,v2},2,2] },
{ offG[{x,y}, {v1,v2},1,1], offG[{x,y}, {v1,v2},2,1], metric[[1,1]], metric[[1,2]] },
{ offG[{x,y}, {v1,v2},1,2], offG[{x,y}, {v1,v2},2,2], metric[[2,1]], metric[[2,2]] }
}]
Metin[sasakiGMet[x,y,v1,v2],{x,y,v1,v2}];
(** Checks against Sasaki's calculations **)
christoffelManualSasaki = Table[ (* Upper index first *)
Simplify[ Christoffel[{{i},{j,k}}] ],
{i,0,3},{j,0,3},{k,0,3}
];
(* Check 1 *)
Table[christoffelManualSasaki[[ii,n+j,n+k]],{ii,1,4},{j,1,2},{k,1,2}] (* Should be all zero *)
(* Check 2 *)
(* Should be zeros; notice they vanish if I change the sign! *)
Table[Simplify[christoffelManualSasaki[[i,n+j,k]] - (1/2)(Sum[riemannManual[[i,k,j,lambda]]v[[lambda]],{lambda,1,2}]) ],{i,1,2},{j,1,2},{k,1,2}]
(* Check 3 *)
Table[
FullSimplify[
christoffelManualSasaki[[n+i,n+j,k]] -
(
christoffelManual[[i,j,k]] -
(1/2) (Sum[
christoffelManual[[i,mu,h]] riemannManual[[h,k,j,lambda]]v[[lambda]] v[[mu]],
{lambda,1,2}, {mu,1,2},{h,1,2}
] )
)
],
{i,1,2},{j,1,2},{k,1,2}
]
My hope is that there is some simple thing I am missing.