Sphere Packing in R^8

4. The E8 Lattice🔗

There are several equivalent definitions of the E_8 lattice. Below, we formalise two of them and prove that they are equivalent.

Definition4.1
Group: Equivalent models of the E8 lattice. (2)
Group member previews
Preview
Definition 4.2
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 0
Used by 2
Reverse dependency previews
Preview
Theorem 4.3
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

We define the E_8 lattice as a subset of \R^8 by \Lambda_8=\{(x_i)\in\Z^8\cup(\Z+\textstyle\frac12\displaystyle )^8|\;\sum_{i=1}^8x_i\equiv 0\;(\mathrm{mod\;2})\}.

Lean code for Definition4.11 definition
  • complete
    def Submodule.E8.{u_2} (R : Type u_2) [Field R] [NeZero 2] :
      Submodule  (Fin 8  R)
    def Submodule.E8.{u_2} (R : Type u_2)
      [Field R] [NeZero 2] :
      Submodule  (Fin 8  R)
Definition4.2
Group: Equivalent models of the E8 lattice. (2)
Group member previews
Preview
Definition 4.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 0
Used by 2
Reverse dependency previews
Preview
Theorem 4.3
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

We define the E_8 basis vectors to be the set of vectors \B_8 = \left\{ \begin{bmatrix} 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ 1 \\ 0 \end{bmatrix}, \begin{bmatrix} -1/2 \\ -1/2 \\ -1/2 \\ -1/2 \\ -1/2 \\ -1/2 \\ -1/2 \\ -1/2 \end{bmatrix}, \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ -1 \\ 0 \end{bmatrix} \right\}.

Lean code for Definition4.21 definition
  • complete
    def E8Matrix.{u_2} (R : Type u_2) [Field R] : Matrix (Fin 8) (Fin 8) R
    def E8Matrix.{u_2} (R : Type u_2) [Field R] :
      Matrix (Fin 8) (Fin 8) R
Theorem4.3
Group: Equivalent models of the E8 lattice. (2)
Group member previews
Preview
Definition 4.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 4.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 4.5
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

The two definitions above coincide, i.e. \Lambda_8 = \mathrm{span}_{\Z}(\B_8).

Lean code for Theorem4.31 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem span_E8Matrix.{u_2} (R : Type u_2) [Field R] [CharZero R] :
      Submodule.span  (Set.range (E8Matrix R).row) = Submodule.E8 R
    theorem span_E8Matrix.{u_2} (R : Type u_2)
      [Field R] [CharZero R] :
      Submodule.span 
          (Set.range (E8Matrix R).row) =
        Submodule.E8 R
Proof for Theorem 4.3
uses 0

We prove that each side contains the other. /- source paragraph break -/ For a vector \vec{v} \in \Lambda_8 \subseteq \R^8, we have \sum_i \vec{v}_i \equiv 0 \pmod{2} and all coordinates are either integers or half-integers. After some modulo arithmetic, it can be seen that \B_8^{-1}\vec{v} has integer coordinates, so \vec{v} \in \mathrm{span}_{\Z}(\B_8). /- source paragraph break -/ For the opposite direction, write \vec{v} = \sum_i c_i\B_8^i \in \mathrm{span}_{\Z}(\B_8) with the c_i integers and \B_8^i the i-th basis vector. Expanding the definition gives \vec{v} = \left(c_1 - \frac{1}{2}c_7, -c_1 + c_2 - \frac{1}{2}c_7, \cdots, -\frac{1}{2}c_7\right). Again, after some modulo arithmetic, it can be seen that \sum_i \vec{v}_i is 0 modulo 2 and that the coordinates are all either integers or all half-integers. /- source paragraph break -/ This proof does not depend on \B_8 being linearly independent.

In this section, we establish basic properties of the E_8 lattice and the \B_8 vectors.

Lemma4.4
Group: Basic structural and arithmetic properties of E8. (4)
Group member previews
Preview
Lemma 4.5
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1used by 1markupTeXL∃∀N

\B_8 is an \R-basis of \R^8. This uses Definition 4.2.

Lean code for Lemma4.41 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem span_E8Matrix_eq_top.{u_2} (R : Type u_2) [Field R] [NeZero 2] :
      Submodule.span R (Set.range (E8Matrix R).row) = 
    theorem span_E8Matrix_eq_top.{u_2} (R : Type u_2)
      [Field R] [NeZero 2] :
      Submodule.span R
          (Set.range (E8Matrix R).row) =
        
Proof for Lemma 4.4
uses 0

It suffices to prove that \B_8 \in \mathrm{GL}_8(\R). We do this by explicitly defining the inverse matrix \B_8^{-1} and proving \B_8 \B_8^{-1} = I_8, which implies that \det(\B_8) is nonzero. See the Lean code for more details.

Lemma4.5
Group: Basic structural and arithmetic properties of E8. (4)
Group member previews
Preview
Lemma 4.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 4.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Theorem 2.14
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

\Lambda_8 is an additive subgroup of \R^8.

Lean code for Lemma4.51 definition
  • abbrevdefined in SpherePacking/Basic/E8.lean
    complete
    abbrev E8Lattice : Submodule  (EuclideanSpace  (Fin 8))
    abbrev E8Lattice :
      Submodule  (EuclideanSpace  (Fin 8))
Proof for Lemma 4.5
uses 0

This follows trivially from the fact that \Lambda_8 \subseteq \R^8 is the \Z-span of \B_8 and hence an additive group.

Lemma4.6
Group: Basic structural and arithmetic properties of E8. (4)
Group member previews
Preview
Lemma 4.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1
Used by 2
Reverse dependency previews
Preview
Lemma 4.7
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
markupTeXL∃∀N

All vectors in \Lambda_8 have norm of the form \sqrt{2n}, where n is a nonnegative integer. This uses Theorem 4.3.

Lean code for Lemma4.61 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem E8_norm_eq_sqrt_even (v : Fin 8  ) (hv : v  Submodule.E8 ) :
       n, Even n  n = WithLp.toLp 2 v ^ 2
    theorem E8_norm_eq_sqrt_even (v : Fin 8  )
      (hv : v  Submodule.E8 ) :
       n, Even n  n = WithLp.toLp 2 v ^ 2
Proof for Lemma 4.6
uses 0

Writing \vec{v} = \sum_i c_i\B_8^i, we have \|v\|^2 = \sum_i \sum_j c_ic_j (\B_8^i \cdot \B_8^j). Computing all 64 pairs of dot products and simplifying gives a large quadratic form in the c_i with even integer coefficients, concluding the proof.

Lemma4.7
Group: Basic structural and arithmetic properties of E8. (4)
Group member previews
Preview
Lemma 4.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1used by 1markupTeXL∃∀N

c\Lambda_8 is discrete, that is, the subspace topology induced by its inclusion into \R^8 is the discrete topology.

Lean code for Lemma4.71 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem instDiscreteE8Lattice : DiscreteTopology E8Lattice
    theorem instDiscreteE8Lattice :
      DiscreteTopology E8Lattice
Proof for Lemma 4.7
uses 0

Since \Lambda_8 is a topological group and + is continuous, it suffices to prove that \{0\} is open in \Lambda_8. This follows from the existence of an open ball \B(\sqrt{2}) \subseteq \R^8 around zero containing no other lattice points, since the shortest nonzero vector has norm \sqrt{2}.

Lemma4.8
Group: Basic structural and arithmetic properties of E8. (4)
Group member previews
Preview
Lemma 4.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Lemma 4.4
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0markupTeXL∃∀N

c\Lambda_8 is a \Z-lattice, that is, it is discrete and spans \R^8 over \R.

Lean code for Lemma4.81 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem instIsZLatticeE8Lattice : IsZLattice  E8Lattice
    theorem instIsZLatticeE8Lattice :
      IsZLattice  E8Lattice
Proof for Lemma 4.8
uses 0

The first part is by Lemma 4.7, and the second part follows from the fact that \B_8 is a basis (Lemma 4.4) and hence linearly independent over \R.

Prove E_8 is unimodular.

Prove E_8 is positive-definite.

Definition4.9
Group: Definition and density computation of the E8 sphere packing. (2)
Group member previews
Preview
Lemma 4.10
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Lemma 4.5
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXL∃∀N

The E_8 sphere packing is the (periodic) sphere packing with separation \sqrt{2}, whose set of centres is \Lambda_8.

Lean code for Definition4.91 definition
Lemma4.10
Group: Definition and density computation of the E8 sphere packing. (2)
Group member previews
Preview
Definition 4.9
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1used by 1markupTeXL∃∀N

\Vol{\Lambda_8} = \mathrm{Covol}(\R^8 / \Lambda_8) = 1.

Lean code for Lemma4.101 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem E8Basis_volume :
      MeasureTheory.volume (ZSpan.fundamentalDomain (E8Basis )) = 1
    theorem E8Basis_volume :
      MeasureTheory.volume
          (ZSpan.fundamentalDomain
            (E8Basis )) =
        1
Proof for Lemma 4.10
uses 0

TODO: In theory this should follow directly from \det(\Lambda_8) = 1, but Lean hates me and EuclideanSpace is being annoying.

Theorem4.11
Group: Definition and density computation of the E8 sphere packing. (2)
Group member previews
Preview
Definition 4.9
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Theorem 3.5
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1markupTeXL∃∀N

We have \Delta_{\mathcal{P}(E_8)} = \frac{\pi^4}{384}.

Lean code for Theorem4.111 theorem
  • theoremdefined in SpherePacking/Basic/E8.lean
    complete
    theorem E8Packing_density : E8Packing.density = ENNReal.ofReal Real.pi ^ 4 / 384
    theorem E8Packing_density :
      E8Packing.density =
        ENNReal.ofReal Real.pi ^ 4 / 384
Proof for Theorem 4.11
uses 0

By Theorem 3.5, we have \Delta_{\mathcal{P}(E_8)} = |E_8 / E_8| \cdot \frac{\Vol{\mathcal{B}_8(\sqrt{2} / 2)}}{\mathrm{Covol}(E_8)} = \frac{\pi^4}{384}, where the last equality follows from Lemma 4.10 and the formula for volume of a ball: \Vol{\mathcal{B}_d(R)} = R^d \pi^{d / 2} / \Gamma\left(\frac{d}{2} + 1\right).