← Mathematics

July 2026

Christoffel Symbols

Christoffel Elwin Bruno E.B. Christoffel

1. Christoffel Symbols

In the Riemann tensor post I called these "fake tensors'' and briefly described them. But that description wasn't great and I said I'd come back to it. So here is the better answer. They measure how the basis vectors themselves change as you move around. Once you look at them as a measure of change, everything about them starts to make a little more sense, including the reason they aren't tensors, and the reason curvature had to be made out of their derivatives.

1.1 The problem

Differentiating a vector field sounds like it should be easy. Write down the components, differentiate the components, done. But a vector field is not just a list of components. It's components multiplied by basis vectors, \(\mathbf{V}=V^\nu\mathbf{e}_\nu\), but we have to remember the product rule:

\[\partial_\mu \mathbf{V} = \left(\partial_\mu V^\nu\right)\mathbf{e}_\nu + V^\nu \partial_\mu \mathbf{e}_\nu . \tag{1}\]

In Cartesian coordinates the second term vanishes, because \(\hat{\mathbf{x}}\) points the same direction at every point in the plane and so its derivative is zero. This is why you can get through a whole course of vector calculus without ever seeing a Christoffel symbol. But that's a special property of Cartesian coordinates, and if you switch to polar coordinates, \(\mathbf{e}_r\) points somewhere different depending on where you're standing. So, we can't drop the second term.

1.2 Definition

So we need to know what \(\partial_\mu\mathbf{e}_\nu\) is. But we know that whatever it turns out to be, it's a vector, and any vector can be expanded in the basis. The coefficients of that expansion are the Christoffel symbols:

\[\partial_\mu \mathbf{e}_\nu = \Gamma^{\lambda}{}_{\mu\nu} \mathbf{e}_\lambda . \tag{2}\]

That's the definition! \(\Gamma^{\lambda}{}_{\mu\nu}\) is the \(\lambda\)-component of how much the \(\nu\)-th basis vector changes when you take a step in the \(\mu\) direction. There are three indices for each direction: which basis vector, which way did you move, and which component of the answer do you want.

Now substitute the definition back into the product rule, relabel the dummy index, and you get the covariant derivative:

\[\nabla_\mu V^\nu = \partial_\mu V^\nu + \Gamma^{\nu}{}_{\mu\lambda}V^\lambda . \tag{3}\]

First term: the components are changing. Second term: the basis is changing. Neither one actually means anything on its own, only the sum behaves properly under a change of coordinates.

1.3 Polar coordinates

Let's actually compute some. Take the flat plane in polar coordinates, so \(x=r\cos\theta\) and \(y=r\sin\theta\). The coordinate basis vectors are just the derivatives of the position with respect to each coordinate:

\[\mathbf{e}_r=\left(\cos\theta, \sin\theta\right), \qquad \mathbf{e}_\theta=\left(-r\sin\theta, r\cos\theta\right). \tag{4}\]

Note that \(\mathbf{e}_\theta\) isn't a unit vector - its length is \(r\). That's normal for a coordinate basis and it's where one of the factors of \(r\) below comes from. Now just differentiate the two of them:

\[\begin{aligned} \partial_r \mathbf{e}_r &= 0 \\ \partial_\theta \mathbf{e}_r &= \left(-\sin\theta, \cos\theta\right) = \frac{1}{r}\mathbf{e}_\theta \\ \partial_r \mathbf{e}_\theta &= \left(-\sin\theta, \cos\theta\right) = \frac{1}{r}\mathbf{e}_\theta \\ \partial_\theta \mathbf{e}_\theta &= \left(-r\cos\theta, -r\sin\theta\right) = -r\mathbf{e}_r \end{aligned}\tag{5}\]

Now you can just read the coefficients straight off:

\[\Gamma^{\theta}{}_{r\theta}=\Gamma^{\theta}{}_{\theta r}=\frac{1}{r}, \qquad \Gamma^{r}{}_{\theta\theta}=-r, \tag{6}\]

and every other one is zero.

1.4 Not tensors

The plane is flat. It's the flat plane, the flattest thing there is. In Cartesian coordinates every single Christoffel symbol on it is zero, because the basis vectors never change. But in polar coordinates on that same flat plane, two of them aren't zero.

So immediately we see they aren't tensors. A tensor that vanishes in one coordinate system vanishes in every coordinate system. Hell, that's the whole idea of the transformation law, since each component gets multiplied by Jacobian factors and zero times anything is still zero. \(\Gamma\) clearly doesn't do that, so \(\Gamma\) isn't a tensor. Remember, a tensor is an object that transforms like a tensor!

The actual formal reason is that its transformation law comes with an extra piece:

\[\Gamma'^{\lambda}{}_{\mu\nu} = \frac{\partial x'^\lambda}{\partial x^\gamma} \frac{\partial x^\alpha}{\partial x'^\mu} \frac{\partial x^\beta}{\partial x'^\nu} \Gamma^{\gamma}{}_{\alpha\beta} + \frac{\partial x'^\lambda}{\partial x^\gamma} \frac{\partial^2 x^\gamma}{\partial x'^\mu \partial x'^\nu}. \tag{7}\]

The first term is exactly what a tensor would do. The second term is garbage, in the same sense as the garbage term that showed up when we differentiated a vector in the index notation post, and it's what allows \(\Gamma\) to be zero in one frame and nonzero in another.

The two lots of garbage then cancel each other, exactly, which is the entire reason \(\nabla_\mu V^\nu\) is a tensor when neither of the two things it's built from is one.

1.5 Why this matters

Because \(\Gamma\) isn't a tensor, "\(\Gamma=0\)'' is a statement about coordinates, not space.

And you can always arrange it. At any point you choose, there are coordinates in which every Christoffel symbol vanishes. In general relativity this is actually free fall: if you step into a falling elevator, gravity is locally gone, for the same reason astronauts float. Nothing about spacetime changed when they went into orbit; the basis they were measuring against did.

So the Christoffel symbols can't measure curvature, because whatever they are telling you can be set to zero anywhere you like. What can't be transformed away is how they change from point to point. If the space is curved, they won't stay zero as you step to a neighbouring point, and their derivatives survive. Which is why the Riemann tensor is built out of \(\partial\Gamma\) and not out of \(\Gamma\).

1.6 From the metric

There's one loose end left. Differentiating basis vectors by hand worked above because we had an embedding in the flat plane to differentiate inside. Usually there's no such thing available, and we'd like the symbols from the metric alone. Fortunately they are:

\[\Gamma^{\lambda}{}_{\mu\nu} = \frac{1}{2}g^{\lambda\sigma}\left( \partial_\mu g_{\sigma\nu} + \partial_\nu g_{\sigma\mu} - \partial_\sigma g_{\mu\nu} \right). \tag{8}\]

This follows from two things: that \(\Gamma\) be symmetric in its lower indices, and that the metric be covariantly constant, \(\nabla_\mu g_{\alpha\beta}=0\), which from what I understand means parallel transport doesn't stretch vectors.

Let's just check it against what we already have. In polar coordinates \(g_{rr}=1\) and \(g_{\theta\theta}=r^2\), and the only nonvanishing derivative is \(\partial_r g_{\theta\theta}=2r\). So \(\Gamma^{r}{}_{\theta\theta}=\frac{1}{2}(1)(-2r)=-r\) and \(\Gamma^{\theta}{}_{r\theta}=\frac{1}{2}(1/r^2)(2r)=1/r\), which is exactly what we got by differentiating the basis vectors.

So: the Christoffel symbols are not measuring the space, but rather your description of it!