In this article we’re going to talk about tensors. They’re not too difficult to understand, especially if you know what a functional is, but often their representation can be awkward. So we’re going to start with the basics and slowly work up to the definition of an actual tensor. We’ll start with a short overview of vector spaces and their duals (when you have one you always have the other). We will then talk about adding extra structure to our space by way of including the set of all homomorphisms between vector spaces. We will certainly need this extra structure to be able to talk about *maps* between spaces, and the origination of these maps is not always obvious. Finally, we focus our attention on the maps which take you from vector spaces (or the dual) to the underlying field of numbers (or scalars). These maps (also called functionals) are the simplest type of tensor. From here is is but a short leap of faith to consider functionals which take you from, not one, but many vector spaces and duals to the underlying field of scalars.

Some people say that tensors are the *workhorse* of general relativity. Why is that? Why are they workhorses? In my opinion there are two reasons: First, because General Relativity, like all physical theories, is a framework used to measure stuff. When you measure something you would like to get a number back representing the value of your measurement. Measuring a thing should always result in a number; this number can then used to compare to other numbers (other measurements) and arrive at an opinion about the thing that you are measuring. A tensor is useful here because they always return a number. Always. But hang on, aren’t there other mathematical objects that return numbers? What makes tensors so special? Tensors are really, really good at converting many types of physical objects (things which can be described by vectors and covectors) in to numbers. They also behave very nicely when you change coordinate systems, something which physicists tend to do a lot. Furthermore, when a basis is present, tensors can also be neatly described by arrays or matrices of ordinary numbers, making it even easier to use them! And this is why tensors are workhorses.

If you want to get in to a bit more detail, tensors are also sensitive to curvature. It does this because they can have extra components that keep track of tiny differences between distances as measured on the curved surface and distances measured as if they were on a flat surface. Ordinary vectors just can’t do this.

But what’s so special about curvature? Well, for starters, ordinary classical calculus hates curved things. Then, to make matters worse, in the early 20th century Einstein proposed that gravity was a manifestation of curved spacetime (and not a flat force field emitted by an object with mass). This appeared like a great idea but calculus had to be re-invented for curved surfaces, and the tensor was born (with the help of Tullio Levi-Civita and Gregorio Ricci-Curbastro).

### Vector Spaces

But before we get in to curved spacetimes, let’s go back to the beginning. Suppose you have two vector spaces and . A vector from can be associated with a vector from by way of a **map**. A map in this sense is a function (i.e. it eats a vector and spits out another vector) and is denoted by . Right now, maps or functions are not really concretely defined; they certainly do not come naturally with the vector spaces and they certainly do not come with the underlying field, so where do they come from and how are they even allowed to exist? Technically, for us to be able to talk about vector spaces *and* maps we need to impose extra *structure* on the vector space. As you should know, plain vanilla vector space is simply a set of objects called **vectors** (and they satisfy a whole bunch of rules called the *vector space axioms*) and we group those together in to a set called . Then there is a set of different objects called **scalars** (and they satisfy a whole bunch of rules called the *scalar axioms*) and we group those together in to a set called . Then there are 4 binary operations called 1) vector space addition, 2) vector space scalar multiplication, 3) field addition, and 4) field multiplication. Thus, we write a **-vector space** as , but really if you want to be precise it is

If we have two vector spaces and we can include some extra structure which we will call the **set of all homomorphisms** from to and denote this set as and this set contains objects called **maps** or **functions** (and they satisfy a whole bunch of rules called *linearity* which we will describe below) and they look like this: and they map . Thus, the complete picture of where we are working is now

Note that is itself a vector space with its own addition and scalar multiplication operations called and , defined by

which maps the pair like so , and similarly for . Since the right hand side of the addition operation is an element of it must be of the form hence

and so it takes vectors and maps them according to .

#### Linearity

We impose a condition on these maps to ensure that when you scale the vectors before the mapping, the resultant vector is also scaled by an associated amount – this makes the map a **linear map** and it satisfies

For convenience I’ve re-labelled the on the right hand side to emphasise that they are vectors in and not . In fact, in tensor analysis it is really important to keep track of which side of the mapping you are on, and in some cases it can get awfully confusing. Take for example the above linearity condition for a linear map. The on the right hand side is both i) a function on a vector and, ii) a vector . Likewise, the plus on the left hand side is the addition operator that comes with the vector space but the plus on the right hand side is the addition operator that comes with the vector space ; and one may write the above with subscripts to be really precise:

However, the and are elements of the same field that comes with both vector spaces, and the multiplication of with is the scalar multiplication that comes with the vector space , which just happens to be the same scalar multiplication that comes with the vector space .

The point here is that writing a simple expression such as that of linearity of maps involves quite a bit of thinking about where you are and what operation you are using. Recall that with vector spaces you actually get quite a lot of structure! Not only do you get a set of vectors , not one but two operations called addition and scalar multiplication

but, don’t forget, you also get the addition and product operations that come with the underlying field! That’s two more types of addition and multiplication! We can see these in action. Consider the expression for two vectors . What plus operator is being used here? It’s the plus operator that comes with vector space, thus it should be written as . OK, what about for a vector and two scalars ? Well, that plus is from the field, then there is a product which comes from the vector space (vector spaces allow scalar multiplication between elements from the underlying field and vectors), hence, to be absolutely clear, we could write .

In light of this, we can no longer say “a vector space” because now we have to be specific about the underlying field, thus we say a **-vector space**.

### Dual Vector Spaces

So we are halfway there. We’ve introduced vector spaces, their underlying fields, and a bit of extra structure (a new set) containing all the homomorphisms from one vector space to another different vector space. Note that the addition and scalar multiplication operations are also maps but they live in a different set called the set of **endomorphisms** (or ) because they are not maps between vector spaces, they are maps from a vector space *in to itself*.

So the set takes care of the maps between different vector spaces, the set takes care of the maps (or operations like addition and multiplication) needed from within the vector space, now we introduce more structure by considering now the maps which go from the vector space *to the underlying field*! These maps are called **functionals** and they look like this . They map vectors to numbers (if you want to call elements of the underlying field “numbers”). The set of all linear functionals on a vector space is actually more than a set, it actually satisfies the properties of an entirely new vector space (actually, the set of homomorphisms is also a vector space). It is called the **dual vector space** and consists of functionals (not vectors), you could call it “*functional space*” but we don’t, we could also call it the set of all linear maps from the vector space to the field, i.e. by . We denote the dual space as to signify that it has something to do with the original vector space .

Unfortunately, functionals require a bit of work to define. The reason being is that a vector is an object, but a number is a number, two very different things. The homomorphisms and endomorphisms were easy to define because we were mapping apples to apples and oranges to oranges. How do we turn a vector in to a number!? Gosh.

#### Basis

To answer the question we need a basis. A **basis** is even more structure we need to add to our vector space and it is, yet another, set. If we impose a basis on our vector space then we have an additional set of privileged vectors, let’s call them with representative , which are all *linearly independent* (you can’t represent one as a linear combination of any others) and they also *span* the entire vector space (which just means every vector can be written as a sum of (scaled) basis vectors). There is also a **dual basis**, denoted by (note the dimension of the dual vector space equals the dimension of the vector space so we must be talking about finite dimensional spaces, trust me, there’s a theorem), or a representative . Now, since the dual vector is a *functional* and not a *vector*, it eats a vector and spits out a number. So we could write something like indicating that the result is an element from the field. In general, however we don’t know what number we get, it could be a 5 or it could be 500. However *we do know* the number when the *basis* dual vector eats a *basis* vector; the number we get is the **Kronecker delta** and it looks like this:

Now we see why we wrote the basis vectors with the index as a superscript! The Kronecker delta must be written with an index upstairs and downstairs; and downstairs is reserved for the basis vector index so the dual basis vector index goes upstairs (there’s also the Einstein summation convention to worry about, later).

Just like a vector can be written in terms of its basis vectors, here’ one:

where the **basis coefficients ** are elements from the underlying field, the dual vectors can be also be written in terms of their dual basis vectors and coefficients:

where the **dual basis coefficients** are elements from the underlying field.

The final ingredient to see how functionals (dual vectors) turn vectors in to numbers is to now consider (in terms of basis) what happens when a dual vector eats a vector. First we write out the action in terms of basis vectors:

That was easy. Now by virtue of linearity let’s re-arrange:

But we know that when a dual basis vector eats a regular basis vector we get the Kronecker delta, so:

The Kronecker delta just equals 1 when so we are left with

These guys are numbers from the underlying field , hence this multiplication is just scalar multiplication. Hence, if this representation works for any component of vectors and functionals, it means dual vectors are capable of taking vectors to numbers.

Side note: If we denote by the map which takes a dual vector and a vector to the field, as in and call this map the **inner product**, then the action of a dual vector on a vector (which returns a number), given by is the same operation:

### Tensors

We have now met maps which take vectors to the field and called them dual vectors (or functionals), . We have met maps which take dual vectors *and* vectors to the field (inner products), . Can we keep going and define maps which takes more than one dual vector and more than one vector to the field? Yes we can.

We are asking if we can define something that look like this:

In a way, this is like a super multiple version of an inner product. Instead of taking just one dual and one vector and getting a number back, you can take multiple duals and multiple vectors and get a number back. The above object is called a **-tensor**.

A (0,1)-tensor maps a vector to a real number, i.e. . Thus, (0,1)-tensors are functionals; they are the duals. Similarly, a (1,0)-tensor is a vector. So the vector space contains all the (1,0)-tensors and the dual space contains all the (0,1)-tensors. The (0,0)-tensor is the underlying field. The inner product is a (1,1)-tensor. A -tensor that it totally antisymmetric is called an -form.

The set of all -tensors is called a **tensor space** of type and is denoted by . Just as a vector space has addition and scalar multiplication operations, a tensor space has the **tensor product** operator given by

Thus, given a -tensor , and a -tensor , thus and , their tensor product is given by

### Tensor Basis

A tensor can be represented by its basis vectors (the basis vectors, obviously, they come from the associated dual and vector spaces) in the following way

### Tensor Space

Let us collect together all -tensors, and introduce two new binary operations and . Then is a vector space called the **tensor space** and will be denoted by .

### References

Lecture 8: Tensor space theory I – Frederic P. Schuller

Nakahara, M. 2008 *Geometry, Topology and Physics ed. II, *Institute of Physics ISBN 0-7503-0606-8

Great explanation. I especially like how you explicitly identified the set of all objects of each particular type of object you introduced.