Volume and the Determinant
The previous page fixed the algebraic side of a lattice: its bases, the freedom to change them, and
the shortest-vector invariants \(\lambda_i\). We now attach to a lattice a single number that
measures how sparsely its points are spread through space — its determinant. This
number is the bridge from the algebra of bases to the geometry of volume, and it is the quantity
Minkowski's theorem will compare against the size of a convex region.
Volume in \(\mathbb{R}^n\)
We need only an elementary notion of volume, and we build it without the machinery of measure
theory. The volume of an axis-aligned box \([a_1, b_1] \times \dots \times [a_n, b_n]\) is the
product of its side lengths \(\prod_i (b_i - a_i)\); this is the definition for boxes, and every
volume we compute below reduces to it. The one fact we borrow from the geometry of linear maps is
how volume transforms under a linear image: for \(\mathbf{B} \in \mathbb{R}^{n \times n}\) and a set
\(S \subseteq \mathbb{R}^n\) with a well-defined volume, the image \(\mathbf{B}S = \{\mathbf{B}
\mathbf{x} : \mathbf{x} \in S\}\) has volume
\[
\operatorname{vol}(\mathbf{B}S) = |\det \mathbf{B}| \cdot \operatorname{vol}(S).
\]
This is the geometric meaning of the
determinant: the
absolute value \(|\det \mathbf{B}|\) is exactly the factor by which the linear map \(\mathbf{B}\)
scales volumes. The unit cube \([0,1]^n\) has volume \(1\), so its image under \(\mathbf{B}\) has
volume \(|\det \mathbf{B}|\); a region built from small cubes scales cube by cube, and a limit of
such approximations extends the law to any region with a volume.
The volume of the fundamental parallelepiped
Recall the
fundamental
parallelepiped \(\mathcal{P}(\mathbf{B}) = \{\mathbf{B}\mathbf{x} : 0 \le x_i \lt 1\}\)
of a basis \(\mathbf{B}\). It is precisely the image under \(\mathbf{B}\) of the half-open unit cube
\([0,1)^n\), whose volume is \(1\). Applying the scaling law gives its volume immediately.
Theorem: Volume of the Fundamental Parallelepiped
For a basis \(\mathbf{B} \in \mathbb{R}^{n \times n}\) of a full-rank lattice,
\[
\operatorname{vol}\big(\mathcal{P}(\mathbf{B})\big) = |\det \mathbf{B}|.
\]
On the previous page we saw that placing one copy of \(\mathcal{P}(\mathbf{B})\) at each lattice
point tiles \(\mathbb{R}^n\) exactly once. The volume of a single tile is therefore the volume of
space "per lattice point": a large region of volume \(V\) contains roughly \(V / |\det \mathbf{B}|\)
lattice points, so a smaller determinant means a denser lattice. This is the sense in which
\(|\det \mathbf{B}|\) measures sparsity.
The determinant of a lattice
A single lattice has many bases, and each carries its own parallelepiped of its own shape. The
key fact is that they all enclose the same volume, so the number \(|\det \mathbf{B}|\)
depends only on the lattice, not on the basis chosen to present it. This is what makes the following
definition legitimate.
Definition: Determinant of a Lattice
The determinant (or covolume) of a full-rank lattice
\(\mathcal{L} = \mathcal{L}(\mathbf{B})\) is the volume of the fundamental parallelepiped of any
basis,
\[
\det \mathcal{L} = \operatorname{vol}\big(\mathcal{P}(\mathbf{B})\big) = |\det \mathbf{B}|.
\]
To see that this does not depend on the basis, let \(\mathbf{B}_1\) and \(\mathbf{B}_2\) be two
bases of the same lattice. We proved that they are related by a
unimodular
matrix, \(\mathbf{B}_2 = \mathbf{B}_1 \mathbf{U}\) with \(\det \mathbf{U} = \pm 1\).
The
multiplicativity
of the determinant then gives
\[
\begin{align*}
|\det \mathbf{B}_2|
&= |\det \mathbf{B}_1| \cdot |\det \mathbf{U}| \\\\
&= |\det \mathbf{B}_1| \cdot 1
= |\det \mathbf{B}_1|,
\end{align*}
\]
so the two bases yield the same volume. The determinant is thus a genuine invariant of the lattice.
For the integer lattice \(\mathbb{Z}^n\), the standard basis is the identity matrix, so
\(\det \mathbb{Z}^n = 1\): a unit of volume holds exactly one integer point, as expected.
Blichfeldt's Theorem
We can now ask the question that leads to Minkowski's theorem. The determinant tells us the volume
of space per lattice point; intuitively, then, any region substantially larger than one such cell
should be forced to contain — or at least to overlap with — the lattice in a controlled way.
Blichfeldt's theorem makes the first precise version of this intuition. It does not yet mention
lattice points inside the region; instead it produces two points of the region whose
difference is a nonzero lattice vector. This is the pigeonhole principle in geometric
form, and Minkowski's theorem will follow from it by a short symmetry argument.
Theorem (Blichfeldt)
Let \(\mathcal{L} \subseteq \mathbb{R}^n\) be a full-rank lattice and let \(S \subseteq
\mathbb{R}^n\) be a set with a well-defined volume satisfying \(\operatorname{vol}(S) \gt \det
\mathcal{L}\). Then there exist two distinct points \(\mathbf{z}_1, \mathbf{z}_2 \in S\) whose
difference \(\mathbf{z}_1 - \mathbf{z}_2\) is a nonzero vector of \(\mathcal{L}\).
Proof
Fix a basis \(\mathbf{B}\) of \(\mathcal{L}\) and let \(\mathcal{P} = \mathcal{P}(\mathbf{B})\)
be its fundamental parallelepiped. Because translates of \(\mathcal{P}\) by lattice vectors tile
\(\mathbb{R}^n\) exactly once, every point of \(S\) lies in exactly one such translate. This
lets us cut \(S\) into pieces, one for each lattice vector \(\mathbf{x} \in \mathcal{L}\):
\[
S_{\mathbf{x}} = S \cap (\mathbf{x} + \mathcal{P}),
\]
the part of \(S\) falling in the tile at \(\mathbf{x}\). These pieces are disjoint and their
union is all of \(S\), so their volumes add up to that of \(S\):
\[
\sum_{\mathbf{x} \in \mathcal{L}} \operatorname{vol}(S_{\mathbf{x}}) = \operatorname{vol}(S).
\]
Now slide each piece back to the home tile at the origin by subtracting its lattice vector.
Define
\[
\widehat{S}_{\mathbf{x}} = S_{\mathbf{x}} - \mathbf{x} = \{\mathbf{s} - \mathbf{x} :
\mathbf{s} \in S_{\mathbf{x}}\}.
\]
Since \(S_{\mathbf{x}} \subseteq \mathbf{x} + \mathcal{P}\), each translated piece
\(\widehat{S}_{\mathbf{x}}\) lies inside \(\mathcal{P}\). Translation does not change volume, so
\(\operatorname{vol}(\widehat{S}_{\mathbf{x}}) = \operatorname{vol}(S_{\mathbf{x}})\), and
therefore
\[
\begin{align*}
\sum_{\mathbf{x} \in \mathcal{L}} \operatorname{vol}(\widehat{S}_{\mathbf{x}})
&= \operatorname{vol}(S) \\\\
&\gt \det \mathcal{L} = \operatorname{vol}(\mathcal{P}).
\end{align*}
\]
Here is the pigeonhole step. We have a family of sets \(\widehat{S}_{\mathbf{x}}\), all contained
in the single tile \(\mathcal{P}\), whose total volume strictly exceeds the volume of
\(\mathcal{P}\) itself. They cannot be pairwise disjoint: if they were, the volume of their
union — a subset of \(\mathcal{P}\) — would equal the sum \(\sum \operatorname{vol}(\widehat
{S}_{\mathbf{x}})\), which is larger than \(\operatorname{vol}(\mathcal{P})\), an impossibility.
So two of them overlap: there are distinct lattice vectors \(\mathbf{x} \neq \mathbf{y}\) and a
common point \(\mathbf{w} \in \widehat{S}_{\mathbf{x}} \cap \widehat{S}_{\mathbf{y}}\).
Unwind the definition of \(\mathbf{w}\). Belonging to \(\widehat{S}_{\mathbf{x}}\) means
\(\mathbf{w} = \mathbf{z}_1 - \mathbf{x}\) for some \(\mathbf{z}_1 \in S_{\mathbf{x}} \subseteq
S\); belonging to \(\widehat{S}_{\mathbf{y}}\) means \(\mathbf{w} = \mathbf{z}_2 - \mathbf{y}\)
for some \(\mathbf{z}_2 \in S_{\mathbf{y}} \subseteq S\). Both \(\mathbf{z}_1\) and
\(\mathbf{z}_2\) lie in \(S\). Subtracting the two expressions for \(\mathbf{w}\),
\[
\mathbf{z}_1 - \mathbf{z}_2 = \mathbf{x} - \mathbf{y} \in \mathcal{L},
\]
a lattice vector, and it is nonzero because \(\mathbf{x} \neq \mathbf{y}\). Finally
\(\mathbf{z}_1 \neq \mathbf{z}_2\), since their difference is nonzero. These are the two points
the theorem promises.
The theorem needs no assumption on the shape of \(S\) — not convexity, not symmetry, only enough
volume. What it delivers is also modest: a difference of two points of \(S\), not a lattice point
inside \(S\). The step from "a difference lies in \(\mathcal{L}\)" to "a point lies in
\(\mathcal{L}\)" is exactly where the extra hypotheses of the next theorem — symmetry and convexity
— will earn their place.
Minkowski's Convex Body Theorem
Blichfeldt's theorem gives a difference of two points; Minkowski's theorem promises an actual
lattice point. The gap between them is bridged by two geometric hypotheses on the region. We name
them first, then show how they convert Blichfeldt's difference into a genuine lattice point.
Definition: Centrally Symmetric Set
A set \(S \subseteq \mathbb{R}^n\) is centrally symmetric (about the origin)
if \(\mathbf{x} \in S\) implies \(-\mathbf{x} \in S\).
The second hypothesis is
convexity:
a set is convex if, with any two of its points, it contains the entire segment joining them. Both
conditions are essential — the theorem fails if either is dropped. A long thin region can have
enormous volume yet avoid every nonzero lattice point by staying between two lattice hyperplanes,
which is possible precisely because it is not "round" enough; convexity and symmetry together rule
this out once the volume is large enough.
Theorem (Minkowski's Convex Body Theorem)
Let \(\mathcal{L} \subseteq \mathbb{R}^n\) be a full-rank lattice and let \(S \subseteq
\mathbb{R}^n\) be a centrally symmetric convex set. If
\[
\operatorname{vol}(S) \gt 2^n \det \mathcal{L},
\]
then \(S\) contains a nonzero lattice point.
Proof
Shrink \(S\) by a factor of two. Let
\[
\widehat{S} = \tfrac{1}{2} S = \{ \tfrac{1}{2}\mathbf{s} : \mathbf{s} \in S \}.
\]
Scaling every coordinate by \(\tfrac{1}{2}\) multiplies volume by \((\tfrac{1}{2})^n\), so
\[
\begin{align*}
\operatorname{vol}(\widehat{S})
&= 2^{-n} \operatorname{vol}(S) \\\\
&\gt 2^{-n} \cdot 2^n \det \mathcal{L} = \det \mathcal{L}.
\end{align*}
\]
The shrunk set \(\widehat{S}\) now has volume exceeding \(\det \mathcal{L}\), which is exactly
the hypothesis of Blichfeldt's theorem. Applying it, there exist two distinct points
\(\mathbf{z}_1, \mathbf{z}_2 \in \widehat{S}\) with
\[
\mathbf{z}_1 - \mathbf{z}_2 \in \mathcal{L} \setminus \{\mathbf{0}\}.
\]
This nonzero lattice vector is the candidate; it remains to show it lies in \(S\).
Since \(\mathbf{z}_1, \mathbf{z}_2 \in \widehat{S} = \tfrac{1}{2}S\), the doubled points
\(2\mathbf{z}_1\) and \(2\mathbf{z}_2\) lie in \(S\). By central symmetry, \(2\mathbf{z}_2 \in
S\) gives \(-2\mathbf{z}_2 \in S\) as well. Now \(S\) contains both \(2\mathbf{z}_1\) and
\(-2\mathbf{z}_2\), so by convexity it contains their midpoint:
\[
\frac{2\mathbf{z}_1 + (-2\mathbf{z}_2)}{2} = \mathbf{z}_1 - \mathbf{z}_2 \in S.
\]
Thus \(\mathbf{z}_1 - \mathbf{z}_2\) is a nonzero lattice vector lying in \(S\), which is what
we set out to find.
The proof shows exactly why both hypotheses are needed: symmetry produces the reflected point
\(-2\mathbf{z}_2\), and convexity takes the midpoint of \(2\mathbf{z}_1\) and \(-2\mathbf{z}_2\).
Remove either one and the final step collapses. The factor \(2^n\) is the price paid for shrinking
\(S\) so that Blichfeldt applies, and it is essentially sharp: no smaller constant works for all
lattices.
A bound on the shortest vector
Minkowski's theorem answers the existence question raised on the previous page. It bounds the
minimum distance \(\lambda_1\) from above in terms of the determinant alone — a purely
volume-theoretic guarantee that a short vector must exist. To extract it, we apply the theorem to a
ball, using one elementary estimate for the ball's volume.
Corollary (Minkowski's First Theorem)
For any full-rank lattice \(\mathcal{L} \subseteq \mathbb{R}^n\),
\[
\lambda_1(\mathcal{L}) \le \sqrt{n}\, (\det \mathcal{L})^{1/n}.
\]
Proof
We first record a lower bound on the volume of a Euclidean ball. The open ball
\(B(\mathbf{0}, r) = \{\mathbf{x} : \|\mathbf{x}\| \lt r\}\) contains the axis-aligned cube of
side \(2r/\sqrt{n}\) centered at the origin, namely \(\{\mathbf{x} : |x_i| \lt r/\sqrt{n}
\text{ for all } i\}\). Indeed, any point of that cube has norm
\[
\begin{align*}
\|\mathbf{x}\|
&= \Big( \sum_i x_i^2 \Big)^{1/2} \\\\
&\lt \Big( n \cdot \tfrac{r^2}{n} \Big)^{1/2} = r,
\end{align*}
\]
so it lies in the ball. The cube has volume \((2r/\sqrt{n})^n\), hence
\[
\operatorname{vol}\big(B(\mathbf{0}, r)\big) \ge \left( \frac{2r}{\sqrt{n}} \right)^n.
\]
A ball is centrally symmetric and convex, so Minkowski's theorem applies to it. Suppose, for
contradiction, that \(\lambda_1(\mathcal{L}) \gt \sqrt{n}\,(\det \mathcal{L})^{1/n}\). Set
\(r = \lambda_1(\mathcal{L})\); then the open ball \(B(\mathbf{0}, r)\) contains no nonzero
lattice point, since every nonzero lattice vector has norm at least \(\lambda_1 = r\). By
Minkowski's theorem, this forces \(\operatorname{vol}(B(\mathbf{0}, r)) \le 2^n \det
\mathcal{L}\). Combining with the ball-volume bound,
\[
\begin{align*}
\left( \frac{2r}{\sqrt{n}} \right)^n
&\le \operatorname{vol}\big(B(\mathbf{0}, r)\big) \\\\
&\le 2^n \det \mathcal{L}.
\end{align*}
\]
Taking \(n\)-th roots, \(2r/\sqrt{n} \le 2 (\det \mathcal{L})^{1/n}\), that is
\(r \le \sqrt{n}\,(\det \mathcal{L})^{1/n}\). This contradicts \(r = \lambda_1 \gt \sqrt{n}\,
(\det \mathcal{L})^{1/n}\). Hence \(\lambda_1(\mathcal{L}) \le \sqrt{n}\,(\det \mathcal{L})^{1/n}\).
Existence without construction
The bound \(\lambda_1 \le \sqrt{n}\,(\det \mathcal{L})^{1/n}\) guarantees that a short lattice
vector exists, and its proof is entirely non-constructive: it argues by contradiction
from a volume inequality and never exhibits the vector it certifies. Nothing in the argument
tells us how to find a vector achieving, or even approximating, this length. This is
the existence–construction gap promised earlier, now made concrete. Producing a short vector
from a given basis is the shortest vector problem, and no efficient algorithm for it is known;
the difficulty of turning Minkowski's guarantee into an actual vector is what later makes the
lattice a foundation for cryptography. The scaling factor \((\det \mathcal{L})^{1/n}\) is the
natural one: replacing \(\mathcal{L}\) by \(c\mathcal{L}\) multiplies both sides by \(c\), so
the inequality respects the geometry uniformly across scales.
The Dual Lattice
To every lattice we attach a second lattice, its dual, built from the requirement that inner
products with the original be integers. The dual reorganizes the same geometric information from
a reciprocal point of view, and the two lattices constrain one another tightly. We develop its
definition and the three structural facts that make it a genuine lattice with a predictable
determinant.
Definition: Dual Lattice
Let \(\mathcal{L} \subseteq \mathbb{R}^n\) be a full-rank lattice. Its dual
lattice (also called the reciprocal lattice) is
\[
\mathcal{L}^* = \{\, \mathbf{y} \in \mathbb{R}^n \mid \langle \mathbf{x}, \mathbf{y}
\rangle \in \mathbb{Z} \text{ for all } \mathbf{x} \in \mathcal{L} \,\}.
\]
For a lattice that is not full-rank, the same condition is imposed but the candidates
\(\mathbf{y}\) are restricted to the subspace the lattice spans,
\[
\mathcal{L}^* = \{\, \mathbf{y} \in \operatorname{Span}(\mathcal{L}) \mid \langle
\mathbf{x}, \mathbf{y} \rangle \in \mathbb{Z} \text{ for all } \mathbf{x} \in \mathcal{L}
\,\}.
\]
Here \(\langle \mathbf{x}, \mathbf{y} \rangle\) is the standard
inner product
on \(\mathbb{R}^n\), and \(\operatorname{Span}(\mathcal{L})\) is the
span of any basis
of \(\mathcal{L}\). In words, the dual consists of exactly those vectors whose pairing with every
lattice point is a whole number. It is immediate from the definition that \(\mathcal{L}^*\) is
closed under addition and under negation, since integers are, so \(\mathcal{L}^*\) is at least an
additive subgroup of \(\mathbb{R}^n\); that it is in fact a lattice requires proof, given below.
Example
The integer lattice is its own dual. If \(\mathbf{y} \in \mathbb{Z}^n\), then for every
\(\mathbf{x} \in \mathbb{Z}^n\) the pairing \(\langle \mathbf{x}, \mathbf{y} \rangle\) is a
sum of products of integers, hence an integer, so \(\mathbb{Z}^n \subseteq (\mathbb{Z}^n)^*\).
Conversely, if \(\mathbf{y} \in (\mathbb{Z}^n)^*\), then pairing \(\mathbf{y}\) against the
standard basis vector \(\mathbf{e}_i\) gives \(\langle \mathbf{e}_i, \mathbf{y} \rangle = y_i
\in \mathbb{Z}\), so every coordinate of \(\mathbf{y}\) is an integer and \((\mathbb{Z}^n)^*
\subseteq \mathbb{Z}^n\). Thus \((\mathbb{Z}^n)^* = \mathbb{Z}^n\); the integer lattice is
self-dual.
Scaling reveals why the word reciprocal is apt. For the lattice \(2\mathbb{Z}^n\),
the condition \(\langle \mathbf{x}, \mathbf{y} \rangle \in \mathbb{Z}\) for all \(\mathbf{x}
\in 2\mathbb{Z}^n\) reads \(2 y_i \in \mathbb{Z}\) for each \(i\), that is \(y_i \in
\tfrac{1}{2}\mathbb{Z}\). Hence \((2\mathbb{Z}^n)^* = \tfrac{1}{2}\mathbb{Z}^n\)\,: stretching
the lattice by a factor of two shrinks its dual by the same factor.
The definition also has a clean geometric reading. Fix a nonzero \(\mathbf{x}\). The set of points
\(\mathbf{y}\) with \(\langle \mathbf{x}, \mathbf{y} \rangle = k\) for a fixed integer \(k\) is a
hyperplane perpendicular to \(\mathbf{x}\), and as \(k\) ranges over \(\mathbb{Z}\) these
hyperplanes form a parallel family, consecutive sheets separated by distance \(1/\|\mathbf{x}\|\).
The requirement defining \(\mathcal{L}^*\) is that every dual vector land on one of these sheets,
simultaneously for every \(\mathbf{x} \in \mathcal{L}\). Each lattice vector thus imposes one
family of equally spaced constraints on the dual, and the finer the lattice is in a given
direction (the longer its vectors there), the more tightly its dual is squeezed in that direction
— the reciprocal relationship made visible.
The dual basis
We compute the dual explicitly from a basis. Recall from the earlier development that a full-rank
lattice is \(\mathcal{L} = \mathcal{L}(\mathbf{B}) = \{\mathbf{B}\mathbf{m} : \mathbf{m} \in
\mathbb{Z}^n\}\) for a basis matrix \(\mathbf{B}\) whose columns \(\mathbf{b}_1, \ldots,
\mathbf{b}_n\) are the basis vectors.
Definition: Dual Basis
Let \(\mathbf{B}\) have columns \(\mathbf{b}_1, \ldots, \mathbf{b}_n\). The dual
basis is the matrix \(\mathbf{D}\) with columns \(\mathbf{d}_1, \ldots, \mathbf{d}_n\)
characterized by the two conditions
\[
\begin{align*}
\operatorname{Span}(\mathbf{D}) &= \operatorname{Span}(\mathbf{B}), \\\\
\mathbf{B}^\top \mathbf{D} &= I.
\end{align*}
\]
The second condition says entry-by-entry that \(\langle \mathbf{b}_i, \mathbf{d}_j \rangle =
\delta_{ij}\), where \(\delta_{ij}\) equals \(1\) when \(i = j\) and \(0\) otherwise. For a
full-rank lattice \(\mathbf{B}\) is a square invertible matrix, so the span condition holds
automatically, and the pairing condition \(\mathbf{B}^\top \mathbf{D} = I\) can be solved for
\(\mathbf{D}\) directly. Multiplying both sides on the left by \((\mathbf{B}^\top)^{-1}\) isolates
\(\mathbf{D}\), so it is uniquely determined,
\[
\mathbf{D} = (\mathbf{B}^\top)^{-1} = \mathbf{B}^{-\top},
\]
where the second equality is the fact that the
inverse commutes with
the transpose. For a lattice that is not full-rank the same two conditions are met by
\(\mathbf{D} = \mathbf{B}(\mathbf{B}^\top \mathbf{B})^{-1}\): the pairing condition holds because
\(\mathbf{B}^\top \mathbf{D} = (\mathbf{B}^\top \mathbf{B})(\mathbf{B}^\top \mathbf{B})^{-1} = I\),
and the span condition holds because each column of \(\mathbf{D}\) is a linear combination of the
columns of \(\mathbf{B}\). This reduces to \(\mathbf{B}^{-\top}\) when \(\mathbf{B}\) is square. We
work with the full-rank case below, noting the general formula where the argument differs.
Theorem (The Dual is a Lattice)
If \(\mathbf{D}\) is the dual basis of \(\mathbf{B}\), then \((\mathcal{L}(\mathbf{B}))^* =
\mathcal{L}(\mathbf{D})\). In particular \(\mathcal{L}^*\) is a lattice, with the dual basis
as one of its bases.
Proof
We prove the two inclusions separately. Write \(\mathcal{L} = \mathcal{L}(\mathbf{B})\).
\(\mathcal{L}(\mathbf{D}) \subseteq \mathcal{L}^*\). It suffices to check
that each column \(\mathbf{d}_j\) lies in \(\mathcal{L}^*\), since \(\mathcal{L}^*\) is
closed under integer combinations. Any \(\mathbf{x} \in \mathcal{L}\) has the form
\(\mathbf{x} = \sum_i a_i \mathbf{b}_i\) with \(a_i \in \mathbb{Z}\), so
\[
\begin{align*}
\langle \mathbf{x}, \mathbf{d}_j \rangle
&= \sum_i a_i \langle \mathbf{b}_i, \mathbf{d}_j \rangle \\\\
&= \sum_i a_i \delta_{ij} = a_j \in \mathbb{Z}.
\end{align*}
\]
Hence \(\mathbf{d}_j \in \mathcal{L}^*\) for each \(j\), and therefore
\(\mathcal{L}(\mathbf{D}) \subseteq \mathcal{L}^*\).
\(\mathcal{L}^* \subseteq \mathcal{L}(\mathbf{D})\). Take any
\(\mathbf{y} \in \mathcal{L}^*\). Since \(\mathbf{y} \in \operatorname{Span}(\mathcal{L}) =
\operatorname{Span}(\mathbf{B}) = \operatorname{Span}(\mathbf{D})\), we may write
\(\mathbf{y} = \sum_i a_i \mathbf{d}_i\) with real coefficients \(a_i \in \mathbb{R}\).
Pairing against a basis vector \(\mathbf{b}_j\), and using that the inner product is
symmetric so that \(\langle \mathbf{d}_i, \mathbf{b}_j \rangle = \langle \mathbf{b}_j,
\mathbf{d}_i \rangle = \delta_{ji} = \delta_{ij}\), gives
\[
\langle \mathbf{y}, \mathbf{b}_j \rangle = \sum_i a_i \langle \mathbf{d}_i,
\mathbf{b}_j \rangle = a_j.
\]
But \(\mathbf{b}_j \in \mathcal{L}\), so \(\langle \mathbf{y}, \mathbf{b}_j \rangle \in
\mathbb{Z}\) by the definition of \(\mathcal{L}^*\); thus every coefficient \(a_j\) is an
integer, and \(\mathbf{y} \in \mathcal{L}(\mathbf{D})\).
The two inclusions give \(\mathcal{L}^* = \mathcal{L}(\mathbf{D})\). The columns
\(\mathbf{d}_1, \ldots, \mathbf{d}_n\) are linearly independent, for if some combination
\(\sum_i c_i \mathbf{d}_i = \mathbf{0}\) held, pairing with \(\mathbf{b}_j\) would give
\(c_j = \sum_i c_i \langle \mathbf{d}_i, \mathbf{b}_j \rangle = 0\) for every \(j\). They
therefore form a basis, so \(\mathcal{L}^*\) is a lattice.
Theorem (Duality is an Involution)
For any lattice \(\mathcal{L}\), taking the dual twice returns the original lattice,
\((\mathcal{L}^*)^* = \mathcal{L}\).
Proof
Let \(\mathbf{B}\) be a basis of \(\mathcal{L}\), so that \(\mathbf{D} = \mathbf{B}^{-\top}\)
is a basis of \(\mathcal{L}^*\) by the previous theorem. Applying the dual-basis
construction a second time to \(\mathbf{D}\), a basis of the dual of \(\mathcal{L}^*\) is
\((\mathbf{D}^\top)^{-1}\). Transposing \(\mathbf{D} = \mathbf{B}^{-\top}\) undoes its
transpose, leaving \(\mathbf{D}^\top = \mathbf{B}^{-1}\), so
\[
(\mathbf{D}^\top)^{-1} = (\mathbf{B}^{-1})^{-1} = \mathbf{B}.
\]
Thus \((\mathcal{L}^*)^*\)
has \(\mathbf{B}\) as a basis, thereby \((\mathcal{L}^*)^* = \mathcal{L}(\mathbf{B}) =
\mathcal{L}\). The general-rank case is identical after replacing \(\mathbf{B}^{-\top}\) by
\(\mathbf{B}(\mathbf{B}^\top \mathbf{B})^{-1}\) and simplifying.
Theorem (Reciprocal Determinant)
For any lattice \(\mathcal{L}\), the determinant of the dual is the reciprocal of the
determinant of the lattice,
\[
\det(\mathcal{L}^*) = \frac{1}{\det(\mathcal{L})}.
\]
Proof
For a full-rank lattice the determinant is \(\det(\mathcal{L}) = |\det \mathbf{B}|\), the
volume of the
fundamental
parallelepiped. The dual basis is \(\mathbf{D} = \mathbf{B}^{-\top}\), so
using that the
determinant is
invariant under transpose,
\[
\begin{align*}
\det(\mathcal{L}^*)
&= |\det \mathbf{B}^{-\top}|
= \left| \frac{1}{\det \mathbf{B}^\top} \right| \\\\
&= \left| \frac{1}{\det \mathbf{B}} \right|
= \frac{1}{\det(\mathcal{L})}.
\end{align*}
\]
For a general-rank lattice the determinant is \(\det(\mathcal{L}) = \sqrt{\det(\mathbf{B}^\top
\mathbf{B})}\), and the dual basis is \(\mathbf{D} = \mathbf{B}(\mathbf{B}^\top
\mathbf{B})^{-1}\). Writing \(G = \mathbf{B}^\top \mathbf{B}\) for brevity and using the
multiplicativity
of the determinant,
\[
\begin{align*}
\det(\mathcal{L}^*)
&= \sqrt{\det(\mathbf{D}^\top \mathbf{D})}
= \sqrt{\det\!\big(G^{-1} \mathbf{B}^\top \mathbf{B}\, G^{-1}\big)} \\\\
&= \sqrt{\det\!\big(G^{-1} G\, G^{-1}\big)}
= \sqrt{\det(G^{-1})}
= \frac{1}{\sqrt{\det G}}
= \frac{1}{\det(\mathcal{L})}.
\end{align*}
\]
In particular a self-dual lattice must have determinant \(1\), as the integer lattice
does.
These three facts — that the dual is a lattice, that dualizing is an involution, and that it
inverts the determinant — are the basic structural properties of duality. There is a deeper layer
relating the geometry of a lattice to that of its dual, controlling how the shortest vector of one
bounds the successive minima of the other. Such transference statements require machinery beyond
the scope of these pages and are taken up elsewhere; here we have established the foundation on
which they rest.