Minkowski's Theorem & the Dual Lattice

Volume and the Determinant Blichfeldt's Theorem Minkowski's Convex Body Theorem The Dual Lattice

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.