I'm watching lecture 8 of gravity and light series by Schuller - which introduces the Riemann curvature tensor. It's a $(1,3)$ tensor $\mathbf{R}$ defined as $$\mathbf{R}(\omega, Z, X, Y):=\omega(\nabla_X\nabla_YZ-\nabla_Y\nabla_XZ-\nabla_{[X,Y]}Z)$$ We want to get an expression for $(\nabla_X\nabla_YZ-\nabla_Y\nabla_XZ)$. So we can say $$\omega(\nabla_X\nabla_YZ-\nabla_Y\nabla_XZ)=\mathbf{R}(\omega, Z, X, Y)+\omega(\nabla_{[X,Y]}Z)$$ Since this holds for arbitrary $\omega$, it makes intuitive sense to me that $$\nabla_X\nabla_YZ-\nabla_Y\nabla_XZ=\mathbf{R}(\_, Z, X, Y)+\nabla_{[X,Y]}Z$$ but I cannot understand the rigorous justification for the above implication.

Question 1. What result / concept have we used to derive the third equation from the second?

It gets stranger when the lecturer converts the above to index notation. In a chart $(U,x)$, $$(\nabla_a\nabla_bZ)^m-(\nabla_b\nabla_aZ)^m=R^m_{\ \ nab}Z^n+\nabla_{\big[\frac{\partial}{\partial x^a},\frac{\partial}{\partial x^b}\big]}Z$$

(the subscript in the last term reads $\big[\frac{\partial}{\partial x^a},\frac{\partial}{\partial x^b}\big]$, in case it's tough to see)

Question 2. How did this index notation equation follow from the third equation? What general guidelines / concepts are used to write a tensor equation in the corresponding index notation?

Apologies in advance if it's a very naive question.

  • $\begingroup$ I assume each $\nabla_X\nabla_YZ-\nabla_X\nabla_YZ$ should be $\nabla_X\nabla_YZ-\nabla_Y\nabla_XZ$. $\endgroup$
    – J.G.
    Aug 31, 2020 at 6:57
  • $\begingroup$ @J.G.: My mistake, I've corrected it $\endgroup$ Aug 31, 2020 at 6:58

1 Answer 1


The first question has nothing to do with geometry, and all to do with linear algebra; in particular the interplay between $V,V^*, V^{**}$ when $V$ is a finite-dimensional vector space (over any field $\Bbb{F}$, doesn't even have to be $\Bbb{R}$). So, that's the situation we shall focus on.

I hope you know that if $\dim V <\infty$, then $\dim V = \dim V^* = \dim V^{**}$, so the spaces are all isomorphic. What's really nice is that $V$ and $V^{**}$ are canonically isomorphic: the map $\iota:V \to V^{**}$ defined by setting for all $v\in V, \omega \in V^*$, $[\iota(v)](\omega) := \omega(v)$ is easily seen to be linear and injective (for example using a basis); then by rank-nullity theorem it follows $\iota$ is actually a linear isomorphism.

Suppose $v\in V$, and $\rho:V^* \to \Bbb{F}$ is such that for all $\omega \in V^*$, \begin{align} \rho(\omega) &= \omega(v) \in \Bbb{F} \end{align} Then, if you unwind the definition of $\iota$, we see that $\rho(\omega) = \omega(v) = [\iota(v)](\omega)$. Since this is true for all $\omega$, we have that $\rho = \iota(v)$, and this is an equality of elements in $V^{**}$ (i.e it's an equality of $(1,0)$-tensors on $V$). Equivalently, we can rewrite this as $v =\iota^{-1}(\rho)$, and this is now a proper equality of elements in $V$ (and in Lecture $3$, I believe he spends some time trying to explain that $V\cong V^{**}$ when trying to explain why every vector "is" or rather "can be regarded" as a $(1,0)$ tensor).

What usually happens is that in the finite-dimensional case, since the isomorphism $V\cong V^{**}$ using $\iota$ is natural, we simply treat the spaces as being equal, $V=V^{**}$. Of course, set-theoretically, these are different spaces, but whenever we have such natural isomorphisms, it (sometimes) becomes rather cumbersome to keep having to distinguish the spaces. It's kind of like trying to distinguish the spaces $\Bbb{R}\times \Bbb{R}\times \Bbb{R}$ vs $\Bbb{R}^2\times \Bbb{R}$ vs $\Bbb{R}\times \Bbb{R}^2$ vs $\Bbb{R}^3$. Set theoretically, these are different objects, but in most circumstances we just call all of these $\Bbb{R}^3$, and rather than saying "there is a bijective correspondence between the four spaces", we simply say "the four spaces are equal".

In your case, the $\rho$ is just the filled in curvature tensor $R(\cdot, Z,X,Y)$ (if you wish, evaluate everything at a point $p\in M$, then the vector space is $V=T_pM$), while the $v$ is $\nabla_X\nabla_YZ-\nabla_X\nabla_YZ-\nabla_{[X,Y]}Z$. Once again, if you want to be super precise about things, then for each $p\in M$, let $\iota_p: T_pM \to (T_pM)^{**}$ be the canonical isomorphism; then \begin{align} \iota_p\bigg((\nabla_X\nabla_YZ)(p)-(\nabla_X\nabla_YZ)(p)-(\nabla_{[X,Y]}Z)(p)\bigg) &= R_p(\cdot, Z(p), X(p), Y(p)). \end{align} But, like I said, especially in this finite-dimensional situation, there's no point (once you understand the isomorphism) in trying to keep track of it (because with some practice it should be easy enough to figure out where exactly it goes).

Another way of describing the isomorphism $\iota$ is as follows. Given any vector space $V$, we can always define the "evaluation map" $\text{ev}:V \times V^* \to \Bbb{F}$ by setting $\text{ev}(v,\omega):= \omega(v)$. Why is it called the evaluation map? Because it's purpose is to literally evaluate the given element of $V^*$ on the given element of $V$ to produce a field element. This is easily verified to be a bilinear map.

Sometimes, this is often called the "duality pairing" and is denoted using angle brackets $\langle \cdot, \cdot \rangle$, but it should not be confused with an inner product, because an inner product usually requires real or complex scalar field and is a map $V\times V \to \Bbb{R}$ or into $\Bbb{C}$.

As a result of being bilinear, it induces two linear maps. The first is the mapping $V\to V^{**}$ given by $v\mapsto \text{ev}(v,\cdot)$, and the second is the mapping $V^* \to V^*$ given by $\omega \mapsto \text{ev}(\cdot, \omega)$. The first mapping is precisely the map $\iota$ which I described above, while the second mapping is simply the identity on $V^*$ so it's not interesting.

Just to drive home the point of what $\iota$ does, note that we can always evaluate covectors $\omega$ on a vector $v$ to get a field element $\omega(v)\in \Bbb{F}$. What $\iota$ allows you to do is associate to $v$, an element $\iota(v)$, which can eat covectors to produce a field element $\iota(v)[\omega]:= \omega(v) \in \Bbb{F}$. Now, since $\iota:V\to V^{**}$ is an isomorphism, what this allows us to do is to be slightly sloppy with notation and not write $\iota$ at all in our formulas, and say that "a covector can act on a vector to yield a scalar", and also that "a vector can act on a covector to yield a scalar", and the two give the same result: \begin{align} \omega(v) = v(\omega) \in \Bbb{F} \end{align}

For question $2$, you're just plugging in a special case of $X=\frac{\partial}{\partial x^a}, Y=\frac{\partial}{\partial x^b}$, and $\omega = dx^m$. Then, starting from the first equation, we have: \begin{align} R\left(dx^m, Z^n\frac{\partial}{\partial x^n}, \frac{\partial}{\partial x^a}, \frac{\partial}{\partial x^b}\right) &= dx^m\left( \nabla_a \nabla_b Z - \nabla_b \nabla_a Z - \nabla_{\left[\frac{\partial}{\partial x^a}, \frac{\partial}{\partial x^b}\right]}Z\right) \end{align} Now, use multilinearity on both sides, and the definition of tensor indices: $T^{i_1,\dots, i_r}_{\qquad j_1, \dots, j_s} := T\left(dx^{i_1}, \dots, dx^{i_r}, \frac{\partial}{\partial x^{j_1}}, \dots, \frac{\partial}{\partial x^{j_s}}\right)$ (see lecture $3$) to get \begin{align} R^{m}_{\,\, nab}Z^n &= (\nabla_a\nabla_bZ)^m-(\nabla_b\nabla_aZ)^m - \left(\nabla_{\left[\frac{\partial}{\partial x^a}, \frac{\partial}{\partial x^b}\right]}Z\right)^m. \end{align}

In general if you want to extract the equation in index form, just plug in the appropriate basis vector fields and covector fields.

  • $\begingroup$ peek-a-boo to the rescue as usual. One thing - Let's say I had some $(2,2)$ tensor defined as $T(f,g,v,w):=f(w.g(v))$ where $f,g$ are covectors and $v,w$ are vectors. Then what general "recipe" would I use to get the expression for $T(\_,\_,v,w)$ or (in general) $T$ with arbitrary arguments left blank? I'm can re-write the action of $T$ as $T(f,g,v,w)=\alpha_{f,g}(v,w)$ where $\alpha_{f,g}$ is a $(0,2)$ tensor defined by $\alpha_{f,g}(v,w)=f(w.g(v))$. But I'm at a loss on how to get the exact expression for $T(\_,\_,v,w)$. Had it been $T(\_,g,v,w)$, I could just write it as $\iota(w.g(v))$ $\endgroup$ Aug 31, 2020 at 6:29
  • $\begingroup$ @ShirishKulhari $S(\cdot, *):= T(\cdot, *, v, w)$ is already as simple as it can get, because this is a $(2,0)$ tensor. If you want to write this in index form, it becomes $S^{ab} = T^{ab}_{\quad mn}v^mw^n$. In the case where you only have one empty $V^*$ slot, such as $T(\cdot, g,v,w)$, this is a $(1,0)$ tensor; i.e an element of the double dual space $V^{**}$, which is isomorphic to $V$, which is why using $\iota$ you can explicitly write it as the image of some vector. $\endgroup$
    – peek-a-boo
    Aug 31, 2020 at 6:35
  • $\begingroup$ Hm I'd understood the latter part of your comment from the answer already, but I was wondering if this canonical isomorphism trickery would apply to more complicated cases where multiple slots are removed. I guess the reason the example in the question was confusing was because I failed to recognize the canonical isomorphism between a vector and a double dual element. The correspondence between $S$ and $T$ is more obvious. $\endgroup$ Aug 31, 2020 at 6:42
  • $\begingroup$ @ShirishKulhari The space $T^2_0(V)$, the space of $(2,0)$ tensors is certainly not isomorphic to $V$, and I'm not sure if there are any other spaces this is worth identifying with. If you have an inner product (or a pseudo-inner-product) so that you have an isomorphism between $V$ and $V^*$, then you get various isomorphisms between the spaces $T^2_0(V), T^1_1(V), T^0_{2}(V)$ (basically the musical isomorphisms, or the "index lowering/raising" operations). But this is not simpler than understanding the original $(2,0)$ tensor. $\endgroup$
    – peek-a-boo
    Aug 31, 2020 at 6:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.