What a tensor really is: a coordinate-blind machine
In the previous guide you met index notation and learned to tell an upstairs index from a downstairs one. Now we say what the object carrying those indices actually *is*. A [[calc-tensor|tensor]] is a machine that eats some vectors and some covectors — feed it the right number of slots — and returns a single real number, *multilinearly*: linear in each slot separately, so doubling one input vector doubles the output, and a sum in one slot splits into a sum of outputs. That is the whole definition. A tensor of type (p, q) has p upstairs slots that eat covectors and q downstairs slots that eat vectors.
You have already been handling small tensors without the name. A plain number — a scalar — is a (0, 0) tensor: it eats nothing and *is* its own value. A vector is a (1, 0) tensor. A covector, the row-vector cousin you can think of as the gradient slot from a differential form, is a (0, 1) tensor: hand it a vector and it returns a number. A matrix that eats two vectors and returns a number — like the dot product, or a bilinear form — is a (0, 2) tensor. The point of the word 'tensor' is not the array of numbers; it is the *machine*, and the machine does not care which coordinates you used to write its numbers down.
Components and the transformation law
Here is the picture that makes everything click. An arrow on a curved surface is one fixed thing; when you rewrite it in new coordinates its *components* change, but the arrow does not. So the components must change in a very particular, choreographed way that exactly cancels the change in the coordinate axes — leaving the underlying object untouched. The instrument that records how axes change is the Jacobian matrix of the coordinate change, the array of partial derivatives dx'^i/dx^j that you met when you studied the chain rule in several variables. Two kinds of indices respond to it in two opposite ways.
An upstairs index marks a [[contravariant-and-covariant-components|contravariant]] component — a vector component, V^i. It transforms 'against' the basis: V'^i = sum over j of (dx'^i/dx^j) V^j. Think of why. If you shrink your ruler to half its length, the same arrow now needs twice as many ruler-lengths to describe it, so its components grow as the basis shrinks. A downstairs index marks a covariant component — a covector or gradient component, omega_i — and it transforms the *other* way, with the inverse Jacobian: omega'_i = sum over j of (dx^j/dx'^i) omega_j. The gradient of a function is the textbook example: its components scale *with* the basis, because steeper coordinates make the same hill register a gentler slope-per-coordinate.
A general (p, q) tensor just stacks these rules: every upstairs index brings a factor of the Jacobian dx'/dx, every downstairs index brings a factor of the inverse dx/dx', all summed over the repeated indices. This is exactly the [[tensor-transformation-law|tensor transformation law]]. And here is the payoff that justifies the whole apparatus: when a contravariant V^i is paired with a covariant omega_i and summed — the contraction sum-over-i of omega_i V^i — the Jacobian and its inverse meet and cancel, by the chain rule, to the identity. The result is a pure number, identical in every coordinate system. The opposite-handed transformations are designed precisely so that pairing an up-index with a down-index produces something coordinate-independent. That cancellation is the heartbeat of the whole subject.
The metric tensor: the ruler of a curved space
So far tensors can pair things and produce numbers, but nothing yet tells you a *length* or an *angle*. On flat paper you measure with the Pythagorean rule, ds^2 = dx^2 + dy^2; the dot product hands you lengths and angles for free. On a curved surface — a sphere, a saddle, the warped spacetime of gravity — there is no global Pythagorean rule, so you carry a local one in your pocket: the [[metric-tensor|metric tensor]], written g_ij. It is a symmetric (0, 2) tensor — two downstairs slots, both eating vectors — and its job is to measure. Hand it two vectors u and v and it returns their inner product, sum over i, j of g_ij u^i v^j; hand it one vector twice and it returns that vector's squared length.
The way you actually meet the metric is through the line element ds^2 = sum over i, j of g_ij dx^i dx^j, the recipe for the squared length of an infinitesimal step. Read off a concrete one. On the plane in polar coordinates (r, theta), a tiny step has ds^2 = dr^2 + r^2 dtheta^2, so the metric is the diagonal matrix [1, 0; 0, r^2]. The r^2 is the whole story: a one-radian step in theta covers a physical distance of r, not 1, and the metric is what remembers that. The space is still flat — it is the same plane — but the *coordinates* are curved, and the metric carries the correction. Genuine curvature, the kind you cannot remove by any clever change of coordinates, lives a step further on, in how the metric varies from point to point.
Once you have ds^2, lengths of finite curves come back by ordinary integration — exactly the arc-length definite integral you ran in Volume I, only with the metric supplying the integrand. The length of a path is the integral of sqrt(ds^2) along it, that is, the integral of sqrt(sum g_ij (dx^i/dt)(dx^j/dt)) dt as the parameter t runs across the curve. On the polar plane that reproduces the right circumferences and radii; on a sphere with ds^2 = R^2 (dtheta^2 + sin^2(theta) dphi^2) it gives great-circle distances. The curves that *minimize* this length — the straightest possible paths a space allows — are the geodesics, and they are where the next guides are headed.
Raising and lowering indices
Now the metric reveals its second job, the one that makes index gymnastics possible. Because g_ij eats a vector in each of its two slots, you can feed it *one* vector and leave the other slot open — and what comes out is a covector. In components, lowering an index reads V_i = sum over j of g_ij V^j: the metric pulls an upstairs index downstairs. This is not a renaming; it is a genuine conversion of a contravariant object into the covariant partner that the metric says it should be matched with. On flat paper with g = [1, 0; 0, 1] the two look numerically identical, which is exactly why first-year vector calculus never had to distinguish them. On a curved space they differ, and the difference matters.
To go the other way — to *raise* an index, pulling a downstairs index up — you need the metric's inverse, written with upstairs indices as g^ij and defined by sum over j of g^ij g_jk = delta^i_k (the identity, the Kronecker delta). Then raising reads V^i = sum over j of g^ij V_j. Lowering with g and raising with its inverse are exact opposites, so doing both in succession returns you to where you started. This is the bookkeeping that lets you always contract an up-index against a down-index: whenever two indices you want to sum are both upstairs or both downstairs, you slip a metric in to flip one of them, and the legal pairing is restored.
RAISE and LOWER with the metric g, on the polar plane
( coordinates (r, theta), g_ij = [ 1, 0 ; 0, r^2 ] )
metric (lower a vector, give back a covector):
g_ij = [ 1 0 ] g^ij = [ 1 0 ]
[ 0 r^2 ] inverse [ 0 1/r^2 ]
start with a vector V^i = ( V^r , V^theta ) (upstairs)
LOWER: V_i = sum_j g_ij V^j
V_r = 1 * V^r = V^r
V_theta = r^2 * V^theta = r^2 V^theta <- NOT equal to V^theta !
RAISE it back: V^i = sum_j g^ij V_j
V^r = 1 * V_r = V^r
V^theta = 1/r^2 * V_theta = 1/r^2 * (r^2 V^theta) = V^theta (round trip)
squared length is the SAME number either way:
|V|^2 = g_ij V^i V^j = V_i V^i = (V^r)^2 + r^2 (V^theta)^2Honest fine print, and where this leads
Be honest about a few things the clean story glosses over. First, the components g_ij are functions of position, not constants — on the sphere the metric at the equator differs from the metric near the pole, and that variation is the whole reason the next guide needs the Christoffel symbols and the covariant derivative to differentiate tensors honestly. Second, 'symmetric and invertible' is doing quiet work: the metric must be non-degenerate everywhere, or lengths collapse. Third, in relativity the metric is not positive-definite — it has signature like (-, +, +, +), so 'squared length' can be negative or zero, which is exactly what separates time from space and lets light travel on zero-length paths.
- Decide what your object eats — vectors, covectors, or both — and how many of each; that fixes its type (p, q) and where the indices sit.
- Check it is really a tensor: confirm its components obey the transformation law — Jacobian for each up-index, inverse Jacobian for each down-index.
- Bring in the metric g_ij to measure lengths and angles, and use g_ij / its inverse g^ij to lower and raise indices whenever you need to pair an up with a down.
- Read the result as a coordinate-free statement: any quantity built by fully contracting indices (every up paired with a down) is a true scalar, the same in every frame.
Hold the three trophies of this guide. A tensor is a coordinate-blind multilinear machine, pinned down not by its array of numbers but by the transformation law those numbers obey — Jacobians for upstairs indices, inverse Jacobians for downstairs ones, arranged so that contracting an up with a down always yields a coordinate-free number. The metric tensor g_ij is the special symmetric (0, 2) tensor that supplies the missing ruler: it measures lengths and angles through ds^2, and it raises and lowers indices through itself and its inverse. What it still cannot do is differentiate. A plain partial derivative of a tensor's components is not itself a tensor, because the basis is turning under your feet as you move — and repairing that is the job of the covariant derivative and the curvature it uncovers, the road straight to general relativity.