The Algebra of Vector Calculus: Mastering the Levi-Civita Symbol

Through countless hours spent working through electromagnetism and fluid dynamics, I have learned that classic vector calculus identities often hide algebraic elegances that brute-force matrix determinant methods tend to overlook.
Memorizing formulas for the curl of a cross product or the divergence of a curl is tedious and prone to sign errors. Today, we look at a more rigorous approach: using index notation and the Levi-Civita symbol to reduce complex vector calculus operations into straightforward algebraic derivations.
The Problem with Traditional Vector Calculus
When faced with an expression like $\nabla \times (\nabla \times \mathbf{A})$, the standard approach is to write out massive determinant expansions for each cross product. This quickly becomes an unreadable mess of partial derivatives, $x$, $y$, and $z$ components, and arbitrary minus signs.
By switching to Einstein summation convention and index notation, we can abandon coordinate-specific expansions and prove vector identities strictly through symmetry and algebra.
Defining the Levi-Civita Symbol
The Levi-Civita symbol, $\epsilon_{ijk}$, is a totally anti-symmetric mathematical object used in three-dimensional space to represent the cross product. Its value depends entirely on the sequence of its indices ($i, j, k \in \{1, 2, 3\}$).
$$ \epsilon_{ijk} = \begin{cases} +1 & \text{if } (i, j, k) \text{ is an even permutation of } (1, 2, 3) \\ -1 & \text{if } (i, j, k) \text{ is an odd permutation of } (1, 2, 3) \\ 0 & \text{if any index is repeated} \end{cases} $$- Even permutations (cyclic): $\epsilon_{123} = \epsilon_{231} = \epsilon_{312} = 1$
- Odd permutations (anti-cyclic): $\epsilon_{132} = \epsilon_{213} = \epsilon_{321} = -1$
- Repeated indices: $\epsilon_{112} = \epsilon_{222} = 0$
Using this symbol, the $i$-th component of a cross product $\mathbf{C} = \mathbf{A} \times \mathbf{B}$ is written concisely as:
$$C_i = \epsilon_{ijk} A_j B_k$$(Note: We are using the Einstein summation convention, meaning repeated indices like $j$ and $k$ are implicitly summed over from 1 to 3).
The Fundamental Identity
To calculate combinations of curls and cross products, we need to multiply two Levi-Civita symbols together. The most important identity in vector algebra relates the product of two Levi-Civita symbols that share a single dummy index (in this case, $i$) to a combination of Kronecker deltas ($\delta$):
$$\epsilon_{ijk} \epsilon_{ilm} = \delta_{jl}\delta_{km} - \delta_{jm}\delta_{kl}$$This identity is the engine that drives all complex vector calculus derivations. Let’s see it in action.
Application 1: The Curl of a Curl
Let’s derive the identity for $\nabla \times (\nabla \times \mathbf{A})$.
1. Setting up the Index Notation
First, write the outer curl. The $i$-th component is:
$$[\nabla \times (\nabla \times \mathbf{A})]_i = \epsilon_{ijk} \partial_j (\nabla \times \mathbf{A})_k$$Now, substitute the inner curl, which has the index $k$:
$$[\nabla \times (\nabla \times \mathbf{A})]_i = \epsilon_{ijk} \partial_j (\epsilon_{klm} \partial_l A_m)$$2. Rearranging and Applying the Identity
Since constants and symbols commute, we can pull $\epsilon_{klm}$ to the front. We also need to rearrange the indices of $\epsilon_{ijk}$ to match the shared index $k$ in the first position. Since cyclic permutations don’t change the sign: $\epsilon_{ijk} = \epsilon_{kij}$.
$$= \epsilon_{kij} \epsilon_{klm} \partial_j \partial_l A_m$$Now apply the fundamental identity ($\epsilon_{kij} \epsilon_{klm} = \delta_{il}\delta_{jm} - \delta_{im}\delta_{jl}$):
$$= (\delta_{il}\delta_{jm} - \delta_{im}\delta_{jl}) \partial_j \partial_l A_m$$3. Contracting the Tensors
Distribute the derivative terms. The Kronecker delta $\delta_{jm}$ forces $j = m$, collapsing the sum:
$$= \delta_{il}\delta_{jm} \partial_j \partial_l A_m - \delta_{im}\delta_{jl} \partial_j \partial_l A_m$$$$= \partial_m \partial_i A_m - \partial_j \partial_j A_i$$4. Translating Back to Vector Form
Now we map this back to standard notation.
- $\partial_m A_m$ is the divergence $\nabla \cdot \mathbf{A}$, and $\partial_i$ makes it the gradient of that divergence: $\nabla(\nabla \cdot \mathbf{A})$.
- $\partial_j \partial_j$ is the Laplacian operator $\nabla^2$ acting on $A_i$.
Application 2: Divergence of a Cross Product
Let’s derive the identity for $\nabla \cdot (\mathbf{A} \times \mathbf{B})$.
1. Setting up the Index Notation
The divergence is a dot product with the del operator, which means a single derivative applied to a vector with a matching index:
$$\nabla \cdot (\mathbf{A} \times \mathbf{B}) = \partial_i (\mathbf{A} \times \mathbf{B})_i$$Substitute the cross product definition:
$$= \partial_i (\epsilon_{ijk} A_j B_k)$$2. Applying the Product Rule
The Levi-Civita symbol is a constant matrix, so it ignores the derivative. We apply the standard product rule to the vector components:
$$= \epsilon_{ijk} [(\partial_i A_j) B_k + A_j (\partial_i B_k)]$$$$= \epsilon_{ijk} (\partial_i A_j) B_k + \epsilon_{ijk} A_j (\partial_i B_k)$$3. Rearranging to Identify Curls
Our goal is to recognize the structure of a curl, which requires the derivative index to precede the vector index ($\epsilon_{abc} \partial_b V_c$).
For the first term, we can cyclically permute $\epsilon_{ijk} \rightarrow \epsilon_{kij}$:
$$\epsilon_{kij} B_k (\partial_i A_j) = B_k (\epsilon_{kij} \partial_i A_j)$$Notice that the term in parentheses is exactly the $k$-th component of $\nabla \times \mathbf{A}$. So this is $\mathbf{B} \cdot (\nabla \times \mathbf{A})$.
For the second term, we swap $i$ and $j$ to match the curl structure for $\mathbf{B}$. Swapping two indices creates an odd permutation, which introduces a minus sign: $\epsilon_{ijk} = -\epsilon_{jik}$.
$$-\epsilon_{jik} A_j (\partial_i B_k) = -A_j (\epsilon_{jik} \partial_i B_k)$$The term in parentheses is the $j$-th component of $\nabla \times \mathbf{B}$. So this is $-\mathbf{A} \cdot (\nabla \times \mathbf{B})$.
Final Solution
Combining the two terms yields the final identity:
$$\boxed{\nabla \cdot (\mathbf{A} \times \mathbf{B}) = \mathbf{B} \cdot (\nabla \times \mathbf{A}) - \mathbf{A} \cdot (\nabla \times \mathbf{B})}$$This demonstrates how switching to index notation reduces the need for rote memorization, turning a complex geometric operation into a mechanical, algebraic process.

