Tensor Algebra: Contraction, Symmetrization and Antisymmetrization

The tensor product hands you a way to build ever-larger tensors — feed two objects in, get one of higher rank out — but it never removes structure. The moment you want a number from a curvature tensor, or want to know why the metric is symmetric and the electromagnetic field is not, you need operations that go the other way: they take a tensor and return a tensor of definite, usually lower, rank, and they do it without invoking a metric, a derivative, or any coordinate choice. Three such operations run the whole of index calculus. Contraction sums a matched upper–lower pair and drops the rank by (1,1)(1,1); symmetrization and antisymmetrization split a tensor by how it behaves when you permute its slots. Each is purely algebraic, purely local — it happens independently at every point of the manifold — and each commutes with the tensor transformation law, which is precisely what earns them the right to be called tensor operations at all. What makes them powerful is that they are the only structure-preserving moves available before any geometry is imposed. Contraction is how every coordinate-invariant scalar in relativity — the Ricci scalar, the field invariant FabFabF_{ab}F^{ab}, the trace of the stress–energy tensor — is ultimately manufactured. Antisymmetrization is the algebraic engine of determinants, the Levi-Civita symbol and the entire calculus of differential forms. Symmetrization is why a line element only ever sees the symmetric part of the metric. This article builds all three from the transformation law and shows how their combinatorics quietly decides the shape of tensors across physics.

Key takeaways
  • Contraction sums a tensor over one upper and one lower index, lowering the rank by (1,1)(1,1); on a (1,1)(1,1) tensor it returns the trace TaaT^a{}_a, a coordinate-independent scalar.
  • Symmetrization T(ab)T_{(ab)} and antisymmetrization T[ab]T_{[ab]} project a tensor onto its symmetric and alternating parts, normalized by 1/k!1/k! over kk permuted indices of the same variance.
  • All three are pointwise, linear, basis-free maps that commute with the transformation law, so they send tensors to tensors of a definite type.
  • Any rank-2 tensor splits uniquely as Tab=T(ab)+T[ab]T_{ab}=T_{(ab)}+T_{[ab]}; in n=4n=4 that is 16=10+616 = 10 + 6 independent components, symmetric plus antisymmetric.
  • Symmetric with antisymmetric contracts to zero, SabAab=0S^{ab}A_{ab}=0 — the selection rule that decides which pieces of a tensor survive a saturation of indices.
  • Key idea: contraction pairs an upper index with a lower one and sums, lowering rank by (1,1)(1,1) and commuting with the transformation law; symmetrization (⋯ )(\cdots) and antisymmetrization [⋯ ][\cdots] are idempotent 1/k!1/k!-normalized projectors onto definite permutation symmetry — all three are pointwise, linear, basis-free tensor-to-tensor maps.
The core insight

Contraction pairs an upper with a lower index and sums, lowering rank by (1,1)(1,1) and commuting with the transformation law; symmetrization (⋯ )(\cdots) and antisymmetrization [⋯ ][\cdots] are idempotent 1/k!1/k!-normalized projectors onto definite permutation symmetry — all three are pointwise, linear, basis-free tensor-to-tensor maps.

Where this lives today

These operations are not historical curiosities; they are the silent arithmetic behind every modern computation in gravitation. When a numerical-relativity code evolves two merging black holes to produce the waveforms that LIGO and Virgo match against, it is contracting the Riemann tensor to form the Ricci and stress–energy tensors thousands of times per grid point per timestep, and it relies on the antisymmetries Rabcd=−Rbacd=−RabdcR_{abcd}=-R_{bacd}=-R_{abdc} and the Bianchi identity Ra[bcd]=0R_{a[bcd]}=0 to cut the curvature's 256256 naive components in n=4n=4 down to the 2020 that are actually independent — without that reduction the computation would be intractable. The same index combinatorics is what modern tensor-algebra software (xAct, Cadabra, and the symbolic engines inside Mathematica and SageManifolds) automates, letting researchers antisymmetrize, symmetrize and contract expressions with hundreds of terms and trust the result. And the split into irreducible symmetric-traceless, trace and antisymmetric parts is the organizing principle behind the decomposition of the Riemann tensor into Ricci and Weyl pieces, the latter carrying the tidal, gravitational-wave degrees of freedom that propagate through empty space. Every one of these applications rests on the elementary fact proved above: contraction and (anti)symmetrization map tensors to tensors, so an equation built from them holds in every frame.

The physical picture

Picture a tensor as a multilinear machine with slots: some slots (upper indices) eat one-forms, the matched slots (lower indices) eat vectors, and the machine spits out a number linear in each input. Contraction is the act of feeding one of the machine's vector slots directly back into its own one-form slot and summing over every basis direction — exactly the trace of a matrix. Two slots vanish, the rank drops by (1,1)(1,1), and what is left is a smaller machine that no longer depends on the frame you happened to choose. Crucially, the upper index carries a Jacobian and the lower index carries its inverse, so when you set them equal and sum, the two factors annihilate by the chain rule and the answer transforms as a genuine tensor. That cancellation is the whole reason a contraction is legal while, say, summing two upper indices is not.

Figure
Contraction of a mixed rank-2 tensor: summing the diagonal T^a_a = 2 + 5 − 1 + 3 = 9 returns a single coordinate-independent scalar, and every contraction removes one upper and one lower slot, dropping the rank from (p, q) to (p−1, q−1)
Contraction: sum one upper index against one lower index, and a scalar drops out T^a_b a labels rows, b labels columns a=0 a=1 a=2 a=3 210−1 0521 3−2−10 1043 T^a_a = 2 + 5 − 1 + 3 = 9 a coordinate-independent scalar (the trace) (1,1) tensor T^a_b set a = b, sum scalar T^a_a Each contraction removes one upper + one lower slot (p, q) → (p−1, q−1) no metric, no derivative needed

Symmetrization and antisymmetrization sort a tensor's information by how it reacts when you relabel its slots. The symmetric part is the unordered content — invariant under any swap of the chosen indices — and it governs metrics, symmetric connections and the stress–energy tensor. The antisymmetric (alternating) part is the oriented content — it flips sign under an odd permutation and so encodes orientation, area and volume — and it is the raw material of determinants, the field strength FabF_{ab} and differential forms. For two indices these two parts are complementary and exhaustive: every rank-2 tensor is the sum of a symmetric and an antisymmetric piece, and nothing else. The 1/k!1/k! factors are not cosmetic; they are exactly the average over the k!k! permutations that makes each operation a projector, so applying it twice changes nothing.

Figure
Unique split of a rank-2 tensor in n = 4: the 16 components separate into a symmetric part with n(n+1)/2 = 10 independent entries and an antisymmetric part with n(n−1)/2 = 6, and 10 + 6 = 16 = n²
Every rank-2 tensor splits uniquely: T_ab = T_(ab) + T_[ab] T_ab 16 entries = T_(ab) n(n+1)/2 = 10 + 0000 T_[ab] n(n−1)/2 = 6 10 + 6 = 16 = n² (the full count of a rank-2 tensor in n = 4) antisymmetric diagonal vanishes; symmetric off-diagonal is counted once

The core equations

The defining move is contraction. Given a (p,q)(p,q) tensor, choose one upper and one lower slot, set their indices equal, and sum over the range under the Einstein convention. The rank drops by exactly (1,1)(1,1) and the result is again a tensor.

Sa1⋯ap−1b1⋯bq−1=Ta1⋯c⋯ap−1b1⋯c⋯bq−1(1)S^{a_1\cdots a_{p-1}}{}_{b_1\cdots b_{q-1}} = T^{a_1\cdots c\cdots a_{p-1}}{}_{b_1\cdots c\cdots b_{q-1}} \qquad (1)

where: TT — the original (p,q)(p,q) tensor; cc — the repeated index summed over its range 0,…,n−10,\dots,n-1; SS — the resulting (p−1,q−1)(p-1,q-1) tensor. The choice of which pair to contract matters: different pairings of a high-rank tensor give genuinely different lower-rank tensors. The simplest and most important instance is the full contraction of a mixed (1,1)(1,1) tensor, which leaves no free indices at all and so must be a scalar — the trace.

tr⁡T≡Taa=∑a=0n−1Taa(2)\operatorname{tr} T \equiv T^a{}_a = \sum_{a=0}^{n-1} T^a{}_a \qquad (2)

where: TaaT^a{}_a — the single contraction, an invariant number; nn — the dimension of the manifold. Because the Jacobian on the upper index cancels the inverse Jacobian on the lower one, this number is the same in every coordinate system. Symmetrization projects onto the part of a tensor that is invariant under any permutation of a chosen set of kk indices of the same variance. Round brackets denote it, and the 1/k!1/k! makes it an average.

T(a1⋯ak)=1k!∑π∈SkTaπ(1)⋯aπ(k)(3)T_{(a_1\cdots a_k)} = \frac{1}{k!}\sum_{\pi\in S_k} T_{a_{\pi(1)}\cdots a_{\pi(k)}} \qquad (3)

where: SkS_k — the symmetric group of all k!k! permutations of kk objects; π\pi — one such permutation; 1/k!1/k! — the normalization that turns the sum into a projector. The bracket may enclose any subset of like indices; indices left outside are spectators. Antisymmetrization is the same average with a sign inserted for each odd permutation. Square brackets denote it, and it kills any term in which two of the bracketed indices coincide.

T[a1⋯ak]=1k!∑π∈Sksgn⁡(π) Taπ(1)⋯aπ(k)(4)T_{[a_1\cdots a_k]} = \frac{1}{k!}\sum_{\pi\in S_k} \operatorname{sgn}(\pi)\, T_{a_{\pi(1)}\cdots a_{\pi(k)}} \qquad (4)

where: sgn⁡(π)\operatorname{sgn}(\pi) — +1+1 for even and −1-1 for odd permutations; T[⋯ ]T_{[\cdots]} — the fully alternating part. In nn dimensions the antisymmetrization of more than nn indices vanishes identically, since some value must repeat. For two indices the two projections are complementary and give the unique additive decomposition of any rank-2 tensor. This is the workhorse identity of index algebra.

Tab=T(ab)+T[ab]=12(Tab+Tba)+12(Tab−Tba)(5)T_{ab} = T_{(ab)} + T_{[ab]} = \tfrac{1}{2}(T_{ab}+T_{ba}) + \tfrac{1}{2}(T_{ab}-T_{ba}) \qquad (5)

where: T(ab)=12(Tab+Tba)T_{(ab)}=\tfrac12(T_{ab}+T_{ba}) — the symmetric part; T[ab]=12(Tab−Tba)T_{[ab]}=\tfrac12(T_{ab}-T_{ba}) — the antisymmetric part. In n=4n=4 these carry 1010 and 66 independent components, summing to the full 1616. Symmetry and antisymmetry interact through contraction in a way that acts as a selection rule: a fully symmetric tensor contracted on both indices against a fully antisymmetric one gives zero, and a mixed tensor's contraction against a symmetric object sees only its symmetric part.

SabAab=0,A[ab]Bab=A[ab]B[ab]=AabB[ab](6)S^{ab}A_{ab}=0,\qquad A_{[ab]}B^{ab} = A_{[ab]}B^{[ab]} = A_{ab}B^{[ab]} \qquad (6)

where: SabS^{ab} — a symmetric tensor; A[ab]A_{[ab]} — an antisymmetric tensor; BabB^{ab} — an arbitrary tensor, of which only the antisymmetric part survives the contraction against AA. This single rule explains why the metric ignores the antisymmetric dx[adxb]\mathrm{d}x^{[a}\mathrm{d}x^{b]} and why RabR_{ab}, being symmetric, annihilates any antisymmetric partner. Antisymmetrization at its extreme is the totally alternating Levi-Civita symbol, and contracting it against a matrix reproduces the determinant — the bridge from index algebra to volumes and orientation.

εa1⋯an=ε[a1⋯an],det⁡(M)=εa1⋯an Ma11⋯Mann(7)\varepsilon_{a_1\cdots a_n}=\varepsilon_{[a_1\cdots a_n]},\qquad \det(M)=\varepsilon_{a_1\cdots a_n}\,M^{a_1}{}_1\cdots M^{a_n}{}_n \qquad (7)

where: εa1⋯an\varepsilon_{a_1\cdots a_n} — the totally antisymmetric symbol with ε01⋯(n−1)=+1\varepsilon_{01\cdots(n-1)}=+1; MabM^a{}_b — the components of a linear map. The determinant is thus nothing but the fully antisymmetric combination of a matrix's columns, which is why it changes sign when two columns are swapped.

Derivation AContraction returns a genuine tensor

The claim that contraction is a legitimate tensor operation is not self-evident: summing selected components looks like a basis-dependent act, yet the output is supposed to transform as a tensor of rank (p−1,q−1)(p-1,q-1). We prove it in the cleanest possible setting — a mixed (1,1)(1,1) tensor, whose single contraction leaves no free index and so ought to be a pure scalar — by pushing its transformation law through the sum and watching the Jacobian and its inverse annihilate each other via the chain rule. The identical cancellation then works pairwise inside any higher-rank tensor.

Step 1. Write the transformation law for a (1,1)(1,1) tensor: T′ab=∂x′a∂xc ∂xd∂x′b TcdT'^{a}{}_{b} = \dfrac{\partial x'^a}{\partial x^c}\,\dfrac{\partial x^d}{\partial x'^b}\,T^{c}{}_{d}. Why: an upper index transforms with the Jacobian ∂x′/∂x\partial x'/\partial x and a lower index with its inverse — the two variance types are exactly opposite, which is the fact the whole argument hinges on.

Step 2. Impose the contraction in the primed frame by setting a=ba=b and summing: T′aa=∂x′a∂xc ∂xd∂x′a TcdT'^{a}{}_{a} = \dfrac{\partial x'^a}{\partial x^c}\,\dfrac{\partial x^d}{\partial x'^a}\,T^{c}{}_{d}. Why: the object we want to prove is a scalar is defined by this diagonal sum, so we must evaluate it and see what coordinate dependence, if any, remains.

Step 3. Collapse the Jacobian product with the chain rule: ∂x′a∂xc ∂xd∂x′a=∂xd∂xc=δdc\dfrac{\partial x'^a}{\partial x^c}\,\dfrac{\partial x^d}{\partial x'^a} = \dfrac{\partial x^d}{\partial x^c} = \delta^{d}{}_{c}. Why: summing a Jacobian against its inverse over the shared index is precisely the chain rule for composing x→x′→xx \to x' \to x, and it produces the identity — the coordinate change has cancelled itself out.

Step 4. Substitute to finish: T′aa=δdc Tcd=TccT'^{a}{}_{a} = \delta^{d}{}_{c}\,T^{c}{}_{d} = T^{c}{}_{c}. Why: the contracted value is literally unchanged by the coordinate transformation, so it is a genuine scalar. Applying the same pairwise cancellation to one upper–lower pair inside a (p,q)(p,q) tensor leaves a bona fide (p−1,q−1)(p-1,q-1) tensor. (Wald 1984, §2.3; MTW §3.4.)

Go deeper · Derivation B · 1 minThe unique split and its component counts
Derivation BThe unique split and its component counts

We show that every rank-2 tensor decomposes uniquely into a symmetric and an antisymmetric part, and then count how many independent components each carries in nn dimensions. Uniqueness is what makes the decomposition physically meaningful — it lets one speak of the symmetric part of a tensor — and the counts are the numbers that decide, for instance, that a symmetric rank-2 tensor in four dimensions has ten components (the metric, the stress–energy) while an antisymmetric one has six (the field strength).

Step 1. Exhibit the split explicitly: Tab=12(Tab+Tba)+12(Tab−Tba)T_{ab} = \tfrac{1}{2}(T_{ab}+T_{ba}) + \tfrac{1}{2}(T_{ab}-T_{ba}), the first term symmetric, the second antisymmetric. Why: this proves existence outright — any tensor can be written this way — and it is manifestly built from the two projectors of equations (3) and (4) applied to k=2k=2.

Step 2. Prove uniqueness: suppose Tab=Sab+Aab=Sab′+Aab′T_{ab}=S_{ab}+A_{ab}=S'_{ab}+A'_{ab} with both pairs symmetric/antisymmetric. Then S−S′=A′−AS-S' = A'-A is simultaneously symmetric and antisymmetric, hence zero. Why: an object equal to both ++ its transpose and −- its transpose must vanish, so the two candidate splits coincide — the decomposition is unique, not merely possible.

Step 3. Count the symmetric components: # T(ab)=(n2)+n=n(n−1)2+n=n(n+1)2\#\,T_{(ab)} = \binom{n}{2}+n = \dfrac{n(n-1)}{2}+n = \dfrac{n(n+1)}{2}. Why: an entry is fixed by an unordered pair of indices — the (n2)\binom{n}{2} off-diagonal pairs, since T(ab)=T(ba)T_{(ab)}=T_{(ba)}, plus the nn diagonal entries that have no partner.

Step 4. Count the antisymmetric components: # T[ab]=(n2)=n(n−1)2\#\,T_{[ab]} = \binom{n}{2} = \dfrac{n(n-1)}{2}, and check n(n+1)2+n(n−1)2=n2\dfrac{n(n+1)}{2}+\dfrac{n(n-1)}{2}=n^2. Why: antisymmetry forces the diagonal T[aa]=0T_{[aa]}=0 and ties each below-diagonal entry to minus its mirror, leaving only the distinct pairs; the two counts sum to the unrestricted total n2n^2, confirming the split is complete. In n=4n=4: 10+6=1610+6=16. (Carroll 2004, §1.5; Schutz 2009, Ch. 3.)

Go deeper · Derivation C · 1 minFrom the Levi-Civita symbol to the determinant
Derivation CFrom the Levi-Civita symbol to the determinant

The determinant is the unique fully antisymmetric function of a matrix's columns, so it must be expressible through the alternating Levi-Civita symbol; we make that precise and, along the way, derive the contracted epsilon identity that reduces products of two symbols to antisymmetrized Kronecker deltas. This is the identity that later turns −g\sqrt{-g} into a genuine tensor density and lets one manipulate volume elements and cross products with pure index algebra.

Step 1. Note that εa1⋯an\varepsilon^{a_1\cdots a_n} is alternating in its aa's and εb1⋯bn\varepsilon_{b_1\cdots b_n} in its bb's, so their product εa1⋯anεb1⋯bn\varepsilon^{a_1\cdots a_n}\varepsilon_{b_1\cdots b_n} is totally antisymmetric in both index groups and can only be a constant times n! δa1[b1⋯δanbn]n!\,\delta^{a_1}{}_{[b_1}\cdots\delta^{a_n}{}_{b_n]}. Why: any tensor with those exact symmetries lives in a one-dimensional space, so two such objects can differ only by an overall scalar.

Step 2. Fix the constant by evaluating at ai=bi=(0,1,…,n−1)a_i=b_i=(0,1,\dots,n-1): the left side is ε01⋯ε01⋯=1\varepsilon^{01\cdots}\varepsilon_{01\cdots}=1, and the antisymmetrized deltas on the right contribute 1/n!1/n! times n!n! surviving permutations, so the prefactor is n!n!. Why: matching a single well-chosen component pins down the one free constant, giving εa1⋯anεb1⋯bn=n! δa1[b1⋯δanbn]\varepsilon^{a_1\cdots a_n}\varepsilon_{b_1\cdots b_n} = n!\,\delta^{a_1}{}_{[b_1}\cdots\delta^{a_n}{}_{b_n]}.

Step 3. Contract the n−1n-1 repeated index pairs: εac2⋯cnεbc2⋯cn=(n−1)! δab\varepsilon^{a c_2\cdots c_n}\varepsilon_{b c_2\cdots c_n} = (n-1)!\,\delta^{a}{}_{b}. Why: summing over the n−1n-1 matched index pairs collapses n!n! to (n−1)!(n-1)! and reduces the antisymmetrized deltas to one Kronecker delta — the everyday form used to simplify curls, cross products and ε\varepsilon-contractions.

Step 4. Read off the determinant: since εa1⋯anMa1b1⋯Manbn\varepsilon_{a_1\cdots a_n}M^{a_1}{}_{b_1}\cdots M^{a_n}{}_{b_n} is alternating in the bb's it must be proportional to εb1⋯bn\varepsilon_{b_1\cdots b_n}, and the proportionality constant is by definition det⁡M\det M. Why: this is exactly the antisymmetrized product of the columns of MM; its sign-flip under column exchange and its vanishing for a repeated column are the defining properties of the determinant. (MTW Ch. 3; Wald Appendix B, with Lorentzian sign conventions.)

Limiting cases

CaseResultMeaning
Trace of a (1,1)(1,1) tensorTaa=T00+T11+⋯+Tn−1n−1T^a{}_a = T^0{}_0 + T^1{}_1 + \cdots + T^{n-1}{}_{n-1}A single contraction of a (1,1)(1,1) tensor gives a scalar — the trace, invariant under any change of basis.
Symmetric tensorTab=Tba ⇒ T[ab]=0, T(ab)=TabT_{ab}=T_{ba}\ \Rightarrow\ T_{[ab]}=0,\ T_{(ab)}=T_{ab}A symmetric tensor is its own symmetric part; its antisymmetric part vanishes (e.g. the metric gabg_{ab}).
Antisymmetric tensorFab=−Fba ⇒ F(ab)=0, F[ab]=FabF_{ab}=-F_{ba}\ \Rightarrow\ F_{(ab)}=0,\ F_{[ab]}=F_{ab}An antisymmetric tensor equals its antisymmetric part (e.g. the field strength FabF_{ab}).
Too many indicesA[a1⋯ak]=0 if k>nA_{[a_1\cdots a_k]}=0\ \text{if}\ k>nIn nn dimensions, total antisymmetrization over more than nn slots vanishes — some value must repeat.
IdempotenceT((ab))=T(ab),  T[[ab]]=T[ab]T_{((ab))}=T_{(ab)},\ \ T_{[[ab]]}=T_{[ab]}Re-projecting an already-projected object changes nothing — the 1/k!1/k! normalization makes the maps projectors.

Worked examples

1 · Splitting a concrete tensor and counting components

Take the rank-2 tensor in three dimensions with components T=(426051237)T = \begin{pmatrix} 4 & 2 & 6 \\ 0 & 5 & 1 \\ 2 & 3 & 7 \end{pmatrix}. Find its symmetric and antisymmetric parts, verify they reconstruct TT, and count the independent components of each.

Step 1. The symmetric part is T(ab)=12(Tab+Tba)T_{(ab)}=\tfrac12(T_{ab}+T_{ba}), i.e. 12(T+TT)\tfrac12(T+T^{\mathsf T}). Averaging TT with its transpose gives T(ab)=(414152427)T_{(ab)} = \begin{pmatrix} 4 & 1 & 4 \\ 1 & 5 & 2 \\ 4 & 2 & 7 \end{pmatrix}, which is manifestly symmetric across the diagonal.

Step 2. The antisymmetric part is T[ab]=12(Tab−Tba)T_{[ab]}=\tfrac12(T_{ab}-T_{ba}), i.e. 12(T−TT)\tfrac12(T-T^{\mathsf T}): T[ab]=(012−10−1−210)T_{[ab]} = \begin{pmatrix} 0 & 1 & 2 \\ -1 & 0 & -1 \\ -2 & 1 & 0 \end{pmatrix}. The diagonal is zero, as antisymmetry demands, and each entry below the diagonal is minus its mirror above.

Step 3. Reconstruct: adding the two matrices returns (426051237)=T\begin{pmatrix} 4 & 2 & 6 \\ 0 & 5 & 1 \\ 2 & 3 & 7 \end{pmatrix}=T exactly — for example the (1,2)(1,2) entry is 1+1=21+1=2 and the (2,1)(2,1) entry is 1−1=01-1=0, both original. The split is unique and complete.

Step 4. Count: in n=3n=3 the symmetric part has n(n+1)/2=6n(n+1)/2 = 6 independent components (three diagonal, three off-diagonal pairs) and the antisymmetric part has n(n−1)/2=3n(n-1)/2 = 3 (the three entries above the diagonal). These sum to 6+3=9=n26+3=9=n^2, the full component count of an unrestricted 3×33\times3 tensor — the arithmetic check that no information was lost.

2 · The Levi-Civita symbol, a determinant and a contraction check

In three dimensions, use det⁡M=εijk Mi1Mj2Mk3\det M = \varepsilon_{ijk}\,M^i{}_1 M^j{}_2 M^k{}_3 to evaluate the determinant of M=(120031211)M = \begin{pmatrix} 1 & 2 & 0 \\ 0 & 3 & 1 \\ 2 & 1 & 1 \end{pmatrix}, then verify the single-contraction identity εaijεbij=(n−1)! δab\varepsilon^{aij}\varepsilon_{bij}=(n-1)!\,\delta^a{}_b.

Step 1. The epsilon expansion runs over the six permutations of (i,j,k)(i,j,k), one for each nonzero ε\varepsilon. Reading columns 1,2,31,2,3 of MM, the even permutations (1,2,3),(2,3,1),(3,1,2)(1,2,3),(2,3,1),(3,1,2) contribute M11M22M33M^1{}_1M^2{}_2M^3{}_3, M21M32M13M^2{}_1M^3{}_2M^1{}_3, M31M12M23M^3{}_1M^1{}_2M^2{}_3 with ++ sign, and the odd ones with −-.

Step 2. Insert the numbers. The three positive terms are (1)(3)(1)=3(1)(3)(1)=3, (0)(1)(0)=0(0)(1)(0)=0, (2)(2)(1)=4(2)(2)(1)=4; the three negative terms are M31M22M13=(2)(3)(0)=0M^3{}_1M^2{}_2M^1{}_3=(2)(3)(0)=0, M11M32M23=(1)(1)(1)=1M^1{}_1M^3{}_2M^2{}_3=(1)(1)(1)=1, M21M12M33=(0)(2)(1)=0M^2{}_1M^1{}_2M^3{}_3=(0)(2)(1)=0. So det⁡M=(3+0+4)−(0+1+0)=6\det M = (3+0+4)-(0+1+0)=\mathbf{6}.

Step 3. Cross-check by cofactor expansion along the first column: 1⋅(3⋅1−1⋅1)−0+2⋅(2⋅1−0⋅3)=1(2)+2(2)=61\cdot(3\cdot1-1\cdot1) - 0 + 2\cdot(2\cdot1-0\cdot3) = 1(2)+2(2)=\mathbf{6}. The two routes agree, confirming the antisymmetrized-column definition really is the determinant.

Step 4. Now the contraction identity. In n=3n=3, (n−1)!=2!=2(n-1)!=2!=2, so it predicts εaijεbij=2 δab\varepsilon^{aij}\varepsilon_{bij}=2\,\delta^a{}_b. Test a=b=1a=b=1: the surviving terms are ε123ε123=(+1)(+1)=1\varepsilon^{123}\varepsilon_{123}=(+1)(+1)=1 and ε132ε132=(−1)(−1)=1\varepsilon^{132}\varepsilon_{132}=(-1)(-1)=1, summing to 2=2δ112=2\delta^1{}_1. Test a=1,b=2a=1,b=2: every term needs {i,j}={2,3}\{i,j\}=\{2,3\} on the left symbol but {i,j}={1,3}\{i,j\}=\{1,3\} on the right, so no term is simultaneously nonzero and the sum is 0=2δ120=2\delta^1{}_2. Both cases confirm εaijεbij=2 δab\varepsilon^{aij}\varepsilon_{bij}=2\,\delta^a{}_b.

Physics of the portrait

Tensor algebra did not fall from the sky with general relativity; it was built, deliberately and against considerable indifference, by an Italian mathematician who spent a decade convinced that the whole of geometry could be reduced to the bookkeeping of upper and lower indices.

Origins · 1 minGregorio Ricci-Curbastro and how this was discovered
GR
Gregorio Ricci-Curbastro
1853–1925 · inventor of the absolute differential calculus

Ricci-Curbastro, professor at Padua, created between roughly 1884 and 1894 what he called the absolute differential calculus — the systematic theory of quantities that transform tensorially, together with the operations that preserve that character. His notation of covariant (lower) and contravariant (upper) indices, and the operation of contraction that pairs and sums them, are exactly the machinery of this article. For years the work was regarded as an elegant but idle formalism; even Ricci's colleagues saw little use for a calculus whose main virtue was that its equations held in every coordinate system. In 1900 he and his former student Tullio Levi-Civita published the definitive exposition, Méthodes de calcul différentiel absolu et leurs applications, in the Mathematische Annalen, laying out symmetrization, contraction and the transformation law in the form still taught today. The vindication came a decade later: when Einstein, guided by Marcel Grossmann, searched for a language in which the laws of gravitation could be written independently of the observer, he found it waiting, fully formed, in Ricci's calculus. The invariants of general relativity — the Ricci tensor and the Ricci scalar that carry his name — are contractions in precisely his sense.

History
1844
— Grassmann's Ausdehnungslehre founds the exterior algebra of antisymmetric products
1868
— Riemann's habilitation lecture is published, giving the curvature tensor whose symmetries this algebra later counts
1892
— Ricci-Curbastro names and systematizes the absolute differential calculus of tensors
1900
— Ricci and Levi-Civita publish the definitive account in the Mathematische Annalen
1916
— Einstein adopts the summation convention, making contraction the everyday tool of general relativity

Going further

References. Misner, Thorne & Wheeler, Gravitation (1973), §3.2–3.5 · Wald, General Relativity (1984), §2.3 and Appendix B · Carroll, Spacetime and Geometry (2004), §1.5–1.7 · Schutz, A First Course in General Relativity, 2nd ed. (2009), Ch. 3 · Hartle, Gravity (2003), Ch. 20. The component counts n(n±1)/2n(n\pm1)/2, and the 2020 independent Riemann components in n=4n=4 (from n2(n2−1)/12n^2(n^2-1)/12 with the Riemann symmetries plus the Bianchi identity), are standard results of the symmetry analysis in this article. The contracted Levi-Civita identity εa1⋯anεb1⋯bn=n! δa1[b1⋯δanbn]\varepsilon^{a_1\cdots a_n}\varepsilon_{b_1\cdots b_n}=n!\,\delta^{a_1}{}_{[b_1}\cdots\delta^{a_n}{}_{b_n]} and the determinant expansion are derived in the Levi-Civita derivation above; sign conventions depend on the choice of metric signature. The perfect-fluid trace Taa=−ρ+3pT^a{}_a=-\rho+3p assumes the (−,+,+,+)(-,+,+,+) signature.

Builds on: General Tensors and the Tensor Product · The Tensor Transformation Law · Tangent Vectors and the Tangent Space · Cotangent Space and One-Forms. Leads to: Raising and Lowering Indices · The Invariant Volume Element · Tensor Densities and Weights · The Metric Tensor and the Line Element.

Ask the tutor: Ask me to antisymmetrize a specific tensor, count the independent components of any symmetry type in nn dimensions, or walk through why one particular contraction of the Riemann tensor gives the Ricci tensor while another gives zero.

Why does contracting an upper with a lower index give a tensor, but summing two upper indices does not?

Because the two index positions transform by opposite factors. An upper index picks up a Jacobian ∂x′/∂x\partial x'/\partial x and a lower index its inverse; when you set an upper equal to a lower and sum, those two factors meet and cancel via the chain rule, leaving something that transforms as a tensor of rank lowered by (1,1)(1,1). If instead you sum two upper indices, you have two Jacobians and nothing to cancel them, so the result depends on the coordinate system and is not a tensor. To pair two like indices legitimately you first raise or lower one with the metric — then it is genuinely an upper against a lower, and the cancellation goes through.

What is the difference between the Levi-Civita symbol and the Levi-Civita tensor?

The symbol εa1⋯an\varepsilon_{a_1\cdots a_n} is a fixed array of ±1\pm1 and 00, defined by total antisymmetry and ε01⋯(n−1)=+1\varepsilon_{01\cdots(n-1)}=+1, identical in every coordinate system by fiat. It is not a tensor: under a coordinate change its natural transform picks up a factor of the Jacobian determinant, so it behaves as a tensor density of weight +1+1. The genuine tensor is obtained by multiplying with ∣g∣\sqrt{|g|}, giving ϵa1⋯an=∣g∣ εa1⋯an\epsilon_{a_1\cdots a_n}=\sqrt{|g|}\,\varepsilon_{a_1\cdots a_n}, which does transform correctly and defines the invariant volume element. This article uses the symbol for the pure algebra of determinants; the promotion to a tensor via ∣g∣\sqrt{|g|} belongs to the invariant-volume-element article that follows.

Do the 1/k!1/k! factors matter, or are they just convention?

They matter for one specific and useful property: idempotence. With the 1/k!1/k! normalization, symmetrization and antisymmetrization are true projectors — applying either one twice gives the same result, T((ab))=T(ab)T_{((ab))}=T_{(ab)} and T[[ab]]=T[ab]T_{[[ab]]}=T_{[ab]} — because you are genuinely averaging over the permutations rather than merely summing them. Some texts (notably in older differential-forms literature) drop the factor and absorb it elsewhere, which is legitimate but then the operations are no longer projectors and factors of k!k! reappear in identities like the wedge product. The convention used here, matching MTW, Wald and Carroll, keeps the algebra clean: a projector squared is itself.

How do these operations produce the 2020 independent components of the Riemann tensor?

The Riemann tensor RabcdR_{abcd} starts with 44=2564^4=256 components in four dimensions, but antisymmetrization and symmetrization conditions slash that number. It is antisymmetric in its first pair, Rabcd=−RbacdR_{abcd}=-R_{bacd}, and in its second pair, Rabcd=−RabdcR_{abcd}=-R_{abdc}; each antisymmetric pair has n(n−1)/2=6n(n-1)/2=6 independent values, and the symmetry Rabcd=RcdabR_{abcd}=R_{cdab} under swapping the pairs makes the 6×66\times6 block symmetric, giving 6⋅7/2=216\cdot7/2=21. The first Bianchi identity Ra[bcd]=0R_{a[bcd]}=0 imposes one further condition in four dimensions, removing exactly one, leaving 21−1=2021-1=20. Every step is an application of the operations in this article.

When I contract a tensor, does it matter which pair of indices I choose?

Yes, in general it does. A single high-rank tensor admits several distinct contractions, and they usually give different lower-rank tensors. The Riemann tensor is the classic example: contracting its first and third indices, Rcacb=RabR^c{}_{acb}=R_{ab}, defines the Ricci tensor, whereas contracting the first and second, RccabR^c{}_{cab}, gives zero by the antisymmetry Rabcd=−RbacdR_{abcd}=-R_{bacd}, and contracting the first and fourth gives −Rab-R_{ab}. So one must specify the slots. The only case where the choice is immaterial is a (1,1)(1,1) tensor, which has just one upper and one lower index, so its single contraction — the trace — is unambiguous.

Why is the metric taken symmetric — could it have an antisymmetric part?

A metric appears only through the line element ds2=gab dxadxb\mathrm{d}s^2=g_{ab}\,\mathrm{d}x^a\mathrm{d}x^b, and the product dxadxb\mathrm{d}x^a\mathrm{d}x^b is symmetric under a↔ba\leftrightarrow b. By the selection rule of equation (6), a symmetric object contracted against gabg_{ab} sees only the symmetric part of gabg_{ab}: any antisymmetric piece g[ab]g_{[ab]} would contract to zero and make no contribution to lengths or angles whatsoever. So one loses nothing by declaring the metric symmetric from the start, and every standard formulation of general relativity does. Theories that do keep an antisymmetric part (Einstein–Cartan with torsion, or non-symmetric gravitation) are using that part for something other than the line element — typically to encode spin or additional fields.

Before this

Where this leads