I understand that in "normal" index notation the indexes can be thought of as coordinates of scalar values inside a tabular data structure, while in the abstract index notation they can not. However, I am not clear on what practical difference this makes when actually doing math. If your are doing numerical calculations then you need to plug actual components into your tensors, so that is not abstract, but is there any difference if you are doing symbolic/algebraic computations? The notations look identical, and even though the interpretation is different, expressions in both cases ultimately denote tensors. As far as I know the algebraic laws are the same. Are there manipulations that are valid in one but not in the other? If you see some tensor calculations, how can you tell if abstract index notation is being used? If you are doing differential geometry with indexes do you need to decide if your indexes are abstract or not? Or am I just missing something?

  • $\begingroup$ What is "normal index notation" compared to "abstract index notation"? $\endgroup$ Jul 30, 2013 at 8:57
  • 2
    $\begingroup$ Normal index notation is the usual tensor calculus notation with indexes and Einstein summation convention. Abstract index notation, invented by Penrose, looks exactly the same but the semantics are a little more subtle en.wikipedia.org/wiki/Abstract_index_notation. My question is when/how do the semantic differences matter in practice? $\endgroup$ Jul 30, 2013 at 9:29

2 Answers 2


First I'd like to share my understanding of abstract index notation. I think this understanding is simpler and more intuitive than Penrose and Rindler's original definition. Your question will be answered later with an example.

Abstract index notation is merely a labelling of the "slots" of the tensor. For example, $T_{ab}{}^c$ is just an abbreviation of $$T(-_a, -_b, -^c).$$ Each "slot" is a parameter as the tensor is viewed as a multilinear map $T:V\times V \times V^* \to \mathbb R$.

You may be already familiar with the labelling slots interpretation. But what does "labelling" a slot exactly mean? Here is my understanding: it means we can fill a specific slot with a vector (or dual vector) by specifying the label of the slot. For example, if we fill the slot labelled $a$ with a vector $u$, and fill the slot labelled $b$ with a vector $v$, and fill the slot labelled $c$ with a dual vector $\omega$, we get $T(u, v, \omega)$, that is $$ T(-_a, -_b, -^c)(\{a=u, \; b=v, \; c=\omega\}) = T(u, v, \omega). $$ Note here a set-like notation $\{a=u, \; b=v, \; c=\omega\}$ is used meaning that the order is irrelevant, $\{b=v, \; a=u, \; c=\omega\}$ and $\{a=u, \; b=v, \; c=\omega\}$ are just the same.

There are two observations from this definition of filling slots:

  1. The position order of the slots is significant. $$S_{ab} \neq S_{ba}$$ in the sense that $$ S(-_a, -_b)(\{a=u, \; b=v\}) = S(u, v) \neq S(v, u) = S(-_b, -_a)(\{a=u, \; b=v\}). $$

  2. An index letter can be substituted with any Latin letter, since it's just a label for the slot. For example $T_{ab} = S_{ab}$ implies $T_{cd} = S_{cd}$. Because $T_{ab} = S_{ab}$ means for any vector $u$ and $v$ $$ T(-_a, -_b)(\{a=u, \; b=v\}) = S(-_a, -_b)(\{a=u, \; b=v\}), $$ that is $$ T(u, v) = S(u, v). $$ And $T_{cd}=S_{cd}$ is equivalent to $T(u, v) = S(u, v)$ too. Note this index substitution is different from index reordering in observation 1, index substitution must be applied on both sides of an equation, We can't exchange $a$ and $b$ from only one side of the equation $S_{ab}=S_{ab}$ to get $S_{ab}=S_{ba}$.

Now we can use abstract index notation to denote tensor product, and contraction operation in a coordinate-free way. For example $U_{abcd} = T_{ab}S_{cd}$ denotes the tensor product $$ U(-_a, -_b, -_c, -_d) = T(-_a, -_b) \cdot S(-_c, -_d). $$ And $T_{ae}{}^{ed}$ denotes the contraction with respect of slots $b$ and $c$ of $T_{ab}{}^{cd}$ $$ T_{ae}{}^{ed} = C_b{}^c(T_{ab}{}^{cd}) = \sum_{\sigma}T(-_a, \frac{\partial}{\partial x^\sigma}, \mathrm dx^\sigma, -^d). $$ Another important operation is (partial) application, but since it's equivalent to a tensor product followed by a contraction, there is no need to introduce a new notation. For example applying a vector $u$ to the slot $a$ of $T_{ab}$ is $$ T(u, -_b) = T_{ab}u^a. $$ where $T_{ab}u^a$ is a tensor product of $T$ and $u$ followed by a contraction: $C_a{}^c(T(-_a, -_b)\cdot u(-^c))$. The result has one free slot left, so it's a (0, 1) tensor. That is, a (0, 2) tensor partially applied with a vector is a (0, 1) tensor.


Consider the following problem: suppose $$T_{abc} = \mathrm dx^\sigma_a \mathrm dx^\mu_b \mathrm dx^\nu_c,$$ where $\sigma$, $\mu$, and $\nu$ are 3 concrete numbers, then what is $T_{abc} + T_{bca}$?

This example more or less answers your question: what is the practical difference between abstract index notation and “ordinary” index notation. Abstract index notation is easier to read and understand especially when abstract indices and concrete indices are mixed.

In abstract index notation, there is a convention that abstract indices use Latin letters while concrete indices use Greek letters. So in this example we can easily see that $a$, $b$, and $c$ are abstract indices while $\sigma$, $\mu$, and $\nu$ are concrete indices.

The notation $\mathrm dx^\sigma_a$ is not very common, but it makes sense. The dual vector $\mathrm dx^\sigma$ is naturally a function that can act on a vector. The equation $T_{abc} = \mathrm dx^\sigma_a \mathrm dx^\mu_b \mathrm dx^\nu_c$ which is just an abbreviation of $$ T(-_a, -_b, -_c) = \mathrm dx^\sigma(-_a) \cdot \mathrm dx^\mu(-_b) \cdot \mathrm dx^\nu(-_c) $$ means when slot $a$ is filled with a vector $u$, $\mathrm dx^\sigma$ will act on that $u$.

To solve the problem, use index substitution, we can get $T_{bca} = \mathrm dx^\sigma_b \mathrm dx^\mu_c \mathrm dx^\nu_a$. So $$ \begin{aligned} T_{abc} + T_{bca} &= \mathrm dx^\sigma_a \mathrm dx^\mu_b \mathrm dx^\nu_c + \mathrm dx^\sigma_b \mathrm dx^\mu_c \mathrm dx^\nu_a \\ &= \mathrm dx^\sigma_a \mathrm dx^\mu_b \mathrm dx^\nu_c + \mathrm dx^\nu_a \mathrm dx^\sigma_b \mathrm dx^\mu_c \\ &= (\mathrm dx^\sigma \otimes \mathrm dx^\mu \otimes \mathrm dx^\nu + \mathrm dx^\nu \otimes \mathrm dx^\sigma \otimes \mathrm dx^\mu)(-_a, -_b, -_c). \end{aligned} $$

This is quite straightforward. On the other hand, if you use concrete index notation to solve this problem, first you need to figure out that the components of $T$ are all zero except $$T_{\xi\eta\zeta} = 1, \text{when}\; \xi=\sigma, \eta=\mu, \zeta=\nu.$$ Or $T_{\sigma\mu\nu}=1$. But what is $T_{bca}$? $T_{\mu\nu\sigma}$? No. You need to define another tensor $S_{\xi\eta\zeta}=T_{\eta\zeta\xi}$, and figure out that its components are all zero except $$ S_{\xi\eta\zeta} = 1, \text{when}\; \xi=\nu, \eta=\sigma, \zeta=\mu. $$ Then finally find the sum $T_{\xi\eta\zeta} + S_{\xi\eta\zeta}$. This procedure is quite complex and error-prone.

If you'd like to translate the equation $$ T_{abc} = \mathrm dx^\sigma_a \mathrm dx^\mu_b \mathrm dx^\nu_c $$ to concrete index notation $$T_{\xi\eta\zeta} = \mathrm dx^\sigma_\xi \mathrm dx^\mu_\eta \mathrm dx^\nu_\zeta. $$ It doesn't help much. Now $\mathrm dx^\sigma_\xi$ is a tensor whose components are all zero except $$ \mathrm dx^\sigma_\xi = 1, \text{when}\; \xi=\sigma. $$ You still need to concern about components. This is not natural. And 6 indices are mixed together, 3 of them are fixed numbers, very confusing.

  • $\begingroup$ Nice! Is there a way in which this fits with the notation $x^iy_j$ for the outer product? $\endgroup$
    – user56834
    Aug 2, 2021 at 17:58
  • $\begingroup$ Good answer, thank you. So just to clarify further: an abstract index is like an unbound variable, whereas a concrete index is like a bound variable or numeric value? $\endgroup$
    – Noldorin
    Aug 13, 2021 at 14:54
  • $\begingroup$ ... and I suppose each concrete index comes with an implicit specification of the basis, besides. $\endgroup$
    – Noldorin
    Aug 13, 2021 at 15:04
  • $\begingroup$ @Noldorin a concrete index is a counter in a tuple, same as in programming: it signifies the position of an element in an ordered set (such as a frame), but an abstract index is just a label, which meaning we both are trying to explain in our answers. Both abstract and concrete indices may appear free or bound, depending on the expressions that they are used in. $\endgroup$ Aug 15, 2021 at 1:15
  • $\begingroup$ @YuriVyatkin Okay, but I think my second point still applies... that with a concrete index there is an (implicit) specification of the basis (treated as an ordered set). Whereas with an abstract index, we just say, "we don't care what basis we're in, these are just slot labels"? $\endgroup$
    – Noldorin
    Aug 15, 2021 at 18:00

The expressions in the abstract index notation and the normal index notation look identical on purpose. This is done in order to retain the calculational flexibility of indices but have a coordinate-free treatment of the subject. The Wikipedia's article is well enough written, but it would also make sense to read the original Penrose's book where one finds most of the details. Examples are given throughout that book, by the way. Be sure, that you have read the digest of the first volume's chapter in the beginning of Volume 2 (I find that brief summary very illuminating). To be honest, I have to admit that Penrose's monograph is rather hard for the first reading, and a beginner should better consult with the first three chapters of the textbook of R. Wald, General relativity, where I personally found the cure against the fear of the abstract indices.

The conventions for abstract indexes are made so that the calculations' appearance is indistinguishable from the same calculations in concrete indices. Indeed, everything must be preserved if one introduces a frame to convert abstract indices into "normal" tensor indices.

So what would be the advantages of the abstract index notation? The main thing is that it is coordinate free. For instance, the Riemann curvature operator in abstract indices can be denoted by $R_{a b}{}^{c}{}_{d}$ at any point and the manifold, but if a coordinate chart or just a frame $\{E_{i}|i=1,\dots,n\}$ has been chosen (which is usually can be done only locally), one can pass to the components of the tensor $R_{a b}{}^{c}{}_{d}$ in this chart as follows $$ R_{i j}{}^{k}{}_{l} = R_{a b}{}^{c}{}_{d} E^{a}{}_{i} E^{b}{}_{j} E_{c}{}^{k} E^{d}{}_{l} $$ where the RHS is understood as $$ R(E_{i},E_{j},E_{l})E_{k}, $$ Notice that in the above equations the indices from the range $a,b,c,\dots$ are seen as abstract, so whenever the same such index appears twice an action of a linear operator on an element of a vector space is assumed. In contrast with that, the indices form the range $i,j,k,\dots$ have numerical values ($1,2,\dots,n$), so when they pair up, the Einstein summation convention takes place.

Another advantage is that the abstract index is quite economical, and the expressions often look much shorter that in the usual coordinate-free notation, especially when one deals with tensor symmetries (compare, for instance the Bianchi identity in both notations).

Caveat. One needs to be told that the abstract indices are used, and also the index ranges must be specified, for instance, $a,b,c,\dots$ would be tensor indices, whereas $A,B,C,\dots$ can represent spinor or tractor indices, and so on.

A simple example of a calculation with abstract indices one can find, for instance, in this answer

Slightly more advanced examples are given here and also here.

  • $\begingroup$ Hi, I am not very good at these index related calculations. Can you please suggest a source where I should begin, or perhaps some advice to get better at calculations. $\endgroup$
    – Isomorphic
    Jul 30, 2016 at 9:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .