Volume and the Determinant
The previous page fixed the algebraic side of a lattice: its bases, the freedom to change them, and
the successive
minima \(\lambda_i\). We now attach to a lattice its determinant, a
single number measuring how sparsely its points are spread through space. 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 \cdots \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 scaling law 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.
Throughout we take for granted that every region appearing below has a well-defined volume, and that
this volume is invariant under translation, monotone under inclusion, and countably additive over
disjoint pieces. We also use the product formula for half-open boxes such as \([0,1)^n\), where it
holds with the same value as for closed ones. Convex sets, balls, and parallelepipeds are of this kind,
and so are the pieces cut from any region with a well-defined volume by the tiles of a lattice.
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 ball 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}|.
\]
For a lattice of rank \(k \lt n\) with basis matrix \(\mathbf{B} \in \mathbb{R}^{n \times k}\)
we define the same quantity by
\[
\det \mathcal{L} = \sqrt{\det(\mathbf{B}^\top \mathbf{B})},
\]
which is positive because \(\mathbf{x}^\top \mathbf{B}^\top \mathbf{B} \mathbf{x} =
\|\mathbf{B}\mathbf{x}\|^2 \gt 0\) for every \(\mathbf{x} \neq \mathbf{0}\), the columns of
\(\mathbf{B}\) being linearly independent. When \(\mathbf{B}\) is square this reduces to
\(|\det \mathbf{B}|\), since \(\det(\mathbf{B}^\top \mathbf{B}) = (\det \mathbf{B})^2\).
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.
The rank-\(k\) formula is basis-independent for the same reason. Two bases
\(\mathbf{B}_1, \mathbf{B}_2 \in \mathbb{R}^{n \times k}\) of the same lattice are again related by
\(\mathbf{B}_2 = \mathbf{B}_1 \mathbf{U}\) with \(\mathbf{U}\) unimodular. The proof of the
equivalence of
bases carries over once the invertibility of \(\mathbf{B}_1\) is replaced by the linear
independence of its columns. With \(\mathbf{U}\) and \(\mathbf{V}\) the integer matrices satisfying
\(\mathbf{B}_2 = \mathbf{B}_1 \mathbf{U}\) and \(\mathbf{B}_1 = \mathbf{B}_2 \mathbf{V}\), the relation
\(\mathbf{B}_1(\mathbf{U}\mathbf{V} - \mathbf{I}) = \mathbf{0}\) forces \(\mathbf{U}\mathbf{V} =
\mathbf{I}\), because a combination of linearly independent columns vanishes only when every
coefficient does. Then
\(\mathbf{B}_2^\top \mathbf{B}_2 = \mathbf{U}^\top (\mathbf{B}_1^\top \mathbf{B}_1) \mathbf{U}\), and
multiplicativity together with the
invariance of the
determinant under transpose gives
\(\det(\mathbf{B}_2^\top \mathbf{B}_2) = (\det \mathbf{U})^2 \det(\mathbf{B}_1^\top \mathbf{B}_1) =
\det(\mathbf{B}_1^\top \mathbf{B}_1)\).
For the integer lattice \(\mathbb{Z}^n\), the standard basis is the identity matrix, so
\(\det \mathbb{Z}^n = 1\). There is one integer point per unit of volume, as expected.
Blichfeldt's Theorem
We can now ask the question that leads to Minkowski's theorem. The determinant measures how much
room a single lattice point takes up. Intuitively, then, any region substantially larger than one
fundamental parallelepiped should be forced to contain lattice points, or at least to meet the
lattice in a controlled way. Blichfeldt's theorem makes the first precise version of this
intuition. The statement 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 would equal the sum \(\sum \operatorname{vol}(\widehat{S}_{\mathbf{x}})\), which
is larger than \(\operatorname{vol}(\mathcal{P})\). That union is a subset of
\(\mathcal{P}\), so its volume cannot exceed \(\operatorname{vol}(\mathcal{P})\). Hence 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\). It asks for neither convexity nor 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. In
dimension \(n \geq 2\) both conditions are essential, and the theorem fails if either is dropped.
For \(\mathbb{Z}^n\), the box \(0 \lt x_1 \lt 1\), \(|x_i| \lt R\) for \(i \geq 2\), is convex
with volume \((2R)^{n-1}\), as large as we like, yet it lies strictly between the lattice
hyperplanes \(x_1 = 0\) and \(x_1 = 1\) and so contains no nonzero lattice point. It is not
centrally symmetric. Adjoining its reflection through the origin gives \(0 \lt |x_1| \lt 1\),
\(|x_i| \lt R\), which is centrally symmetric but not convex, and still misses the nonzero lattice
points, since a point of it has first coordinate strictly between \(-1\) and \(1\) and never equal
to \(0\). 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 that 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. It is essentially sharp, since 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. The bound is 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. The argument proceeds 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 shortest vector from a given basis is the shortest vector problem, and once the
dimension is large 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\) for every \(c \gt 0\), 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 : \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}) : \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\). We prove below that it is in fact a lattice.
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}\). As \(k\) ranges over \(\mathbb{Z}\) these hyperplanes
form a parallel family, with 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. The coarser the lattice is in a given direction,
meaning the longer its vectors there, the more tightly its dual is squeezed in that direction. This
is 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.
When the lattice is not full-rank, the two conditions are met instead 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, so \((\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 are the basic structural properties of duality: that the dual is a lattice, that
dualizing is an involution, and that it inverts the determinant. There is a deeper layer relating
the geometry of a lattice to that of its dual. That layer controls how the shortest vector of one
bounds the successive minima of the other. Such transference statements require machinery beyond
the scope of these pages. Here we have established the foundation on which they rest.