Pairwise Separation of Niemeier Theta Series at Genus Four
and Orthogonal Frame Enumeration

SRFP311T1 Collaboration

August, 2026

Abstract

We study the ordinary scalar Siegel theta series of the 2424 Niemeier lattices. In genera 11, 22, and 33, these theta series exhibit strict Coxeter-number rigidity: lattices sharing the same Coxeter number hh have identical scalar theta series. In particular, the five collision classes among the Niemeier root systems cannot be distinguished in genus at most three.

We prove that the exact minimal genus of pairwise separation is four. For the five Coxeter-number collision pairs, the distinguishing invariant is the Fourier coefficient indexed by I4=diag⁡(1,1,1,1)I_4=\operatorname{diag}(1,1,1,1), which counts ordered orthogonal 44-frames of roots. We derive exact closed-form generating functions for orthogonal frame counts in all simply-laced root systems from first principles and assemble them to evaluate a(I4,ΘN(4))a(I_4,\Theta_N^{(4)}) for every Niemeier lattice.

Separation reduces deductively to evaluating a(I4)a(I_4) on the five Coxeter-number collision pairs, all of which yield strictly positive differences. We contrast this with linear independence, which Borcherds, Freitag, and Weissauer proved occurs if and only if g≥12g\geq 12.

Introduction

Let 𝒩24\mathcal N_{24} denote the set of the 2424 positive-definite even unimodular lattices of rank 2424, classified by Niemeier . The family consists of the 2323 rooted Niemeier lattices and the unique rootless Leech lattice Λ24\Lambda_{24} .

For an even unimodular lattice LL of rank 2424 and an integer g≥1g\geq1, let ℍg={Z∈Mat⁡g×g(ℂ):Z=Z𝖳,Im(Z)>0}\mathbb H_g = \left\{ Z\in\operatorname{Mat}_{g\times g}(\mathbb C): Z=Z^{\mathsf T},\ \operatorname{Im}(Z)>0 \right\} denote the Siegel upper half-space. The degree-gg Siegel theta series of LL is ΘL(g)(Z)=∑X∈Lgexp⁡(πitr(X𝖳XZ)),\Theta_L^{(g)}(Z) = \sum_{X\in L^g} \exp\!\left( \pi i\,\operatorname{tr}(X^{\mathsf T}XZ) \right), where X=(x1,…,xg)X=(x_1,\dots,x_g) is regarded as a 24×g24\times g matrix with columns xj∈Lx_j\in L. Since LL is even unimodular of rank 2424, ΘL(g)∈M12(Sp⁡2g(ℤ)).\Theta_L^{(g)}\in M_{12}\!\left(\operatorname{Sp}_{2g}(\mathbb Z)\right).

A fundamental question in the arithmetic theory of modular forms is determining the capacity of Siegel theta series to distinguish non-isometric lattices:

What is the minimal genus gg for which the scalar Siegel theta series distinguish all 2424 Niemeier lattices pairwise?

This question involves two fundamentally distinct algebraic phenomena:

  1. Pairwise separation: ΘN1(g)≠ΘN2(g)\Theta_{N_1}^{(g)}\neq\Theta_{N_2}^{(g)} for all distinct isometry classes N1≠N2N_1\neq N_2 in 𝒩24\mathcal N_{24}.

  2. Linear independence: dim⁡ℂspan⁡{ΘN(g):N∈𝒩24}=24.\dim_{\mathbb C}\operatorname{span} \{\Theta_N^{(g)}:N\in\mathcal N_{24}\}=24.

Borcherds, Freitag, and Weissauer established that the 2424 Niemeier theta series are linearly dependent in all degrees g≤11g\leq 11 and become linearly independent in degree 1212.

In this paper, we resolve the minimal pairwise separation problem.

Theorem 1 (Minimal Pairwise Separation at Genus Four). The ordinary scalar Siegel theta series of the 2424 Niemeier lattices are pairwise distinct in genus 44: N1≠N2⇒ΘN1(4)≠ΘN2(4).N_1\neq N_2 \quad\Longrightarrow\quad \Theta_{N_1}^{(4)} \neq \Theta_{N_2}^{(4)}. Moreover, genus 44 is strictly minimal: in every genus g≤3g\leq3, there exist non-isomorphic Niemeier lattices having identical scalar theta series.

The logical structure of the proof is clean:

Niemeier Root Systems and Coxeter-Number Collisions

Every rooted Niemeier lattice NN is uniquely determined up to isometry by its root system Roots⁡(N)=⨁iXimi,\operatorname{Roots}(N) = \bigoplus_i X_i^{m_i}, where each XiX_i is an irreducible simply-laced root system of ADE type and ∑imirk⁡(Xi)=24.\sum_i m_i\operatorname{rk}(X_i)=24. All irreducible components XiX_i of a given rooted Niemeier lattice share a common Coxeter number hh (by a theorem of Venkov ).

Across the 2323 rooted lattices, there are 1818 distinct positive Coxeter numbers. Including the Leech lattice, which is rootless and is assigned h=0h=0, there are 1919 Coxeter-number values. Exactly five positive Coxeter numbers occur for two distinct Niemeier lattices. These give the five collision classes: $$\begin{array}{c l l} \toprule h & \text{Collision class} & \text{Root systems}\\ \midrule 6 & (A_5^4D_4,\;D_4^6) & A_5^{\oplus4}\oplus D_4 \quad\text{vs.}\quad D_4^{\oplus6} \\[1mm] 10 & (A_9^2D_6,\;D_6^4) & A_9^{\oplus2}\oplus D_6 \quad\text{vs.}\quad D_6^{\oplus4} \\[1mm] 12 & (A_{11}D_7E_6,\;E_6^4) & A_{11}\oplus D_7\oplus E_6 \quad\text{vs.}\quad E_6^{\oplus4} \\[1mm] 18 & (A_{17}E_7,\;D_{10}E_7^2) & A_{17}\oplus E_7 \quad\text{vs.}\quad D_{10}\oplus E_7^{\oplus2} \\[1mm] 30 & (D_{16}E_8,\;E_8^3) & D_{16}\oplus E_8 \quad\text{vs.}\quad E_8^{\oplus3} \\ \bottomrule \end{array}$$

The remaining 1313 rooted lattices have unique Coxeter numbers, while the Leech lattice is rootless.

Rigidity in Genera One, Two, and Three

In genera g≤3g\leq3, the scalar theta series of a Niemeier lattice depend only on its Coxeter number hh.

Genus One

The number of roots of NN is R(N)=24h.R(N)=24h. The genus-one theta series is ΘN(1)=E43+(24h−720)Δ∈M12(SL2(ℤ)).\begin{equation} \Theta_N^{(1)} = E_4^3+(24h-720)\Delta \in M_{12}(\mathrm{SL}_2(\mathbb Z)). \label{eq:genus1} \end{equation}

Thus the span of all genus-one Niemeier theta series has dimension d(1)=2d(1)=2.

Lemma 2. If h(N1)≠h(N2)h(N_1)\neq h(N_2), then ΘN1(1)≠ΘN2(1).\Theta_{N_1}^{(1)}\neq\Theta_{N_2}^{(1)}. Consequently, ΘN1(g)≠ΘN2(g)for every g≥1.\Theta_{N_1}^{(g)}\neq\Theta_{N_2}^{(g)} \qquad \text{for every }g\geq1.

Proof. The coefficient of qq in ΘN(1)\Theta_N^{(1)} is the number of roots, namely 24h24h. Hence different Coxeter numbers give different genus-one theta series.

For g≥1g\geq1, the Siegel Φ\Phi-operator satisfies Φg→1(ΘN(g))=ΘN(1).\Phi^{g\to1}\!\left(\Theta_N^{(g)}\right) = \Theta_N^{(1)}. Therefore equality of the genus-gg theta series would imply equality of their genus-one specializations. ◻

Genus Two

Let XX be an irreducible simply-laced root system of rank rr and Coxeter number hh. Every root α∈X\alpha\in X is orthogonal to exactly rh−(4h−6)rh-(4h-6) roots of XX.

If N=⨁iXiN=\bigoplus_i X_i is a Niemeier root system and α∈Xk\alpha\in X_k, then the roots orthogonal to α\alpha consist of those orthogonal to α\alpha inside XkX_k together with all roots in the other components. Thus the number of roots orthogonal to α\alpha in NN is [rkh−(4h−6)]+(24−rk)h=20h+6.[r_kh-(4h-6)]+(24-r_k)h = 20h+6.

Hence the number of ordered orthogonal root pairs is universally a(I2,ΘN(2))=24h(20h+6)=480h2+144h.a(I_2,\Theta_N^{(2)}) = 24h(20h+6) = 480h^2+144h.

By Erokhin and Nagaoka–Takemori , the genus-two theta series is ΘN(2)=(E4(2))3+(24h−720)Y12(2)+(48h2−2800h+43200)X12(2).\begin{equation} \Theta_N^{(2)} = (E_4^{(2)})^3 + (24h-720)Y_{12}^{(2)} + (48h^2-2800h+43200)X_{12}^{(2)}. \label{eq:genus2} \end{equation}

Thus the span has dimension d(2)=3.d(2)=3.

Genus Three

The total number of ordered orthogonal root triples is a(I3,ΘN(3))=7872h3+7104h2+2880h=192h(41h2+37h+15).a(I_3,\Theta_N^{(3)}) = 7872h^3+7104h^2+2880h = 192h(41h^2+37h+15).

Nagaoka and Takemori proved that the genus-three theta series depends polynomially on hh of degree at most three, with the explicit expression ΘN(3)=(E4(3))3+(24h−720)Y12(3)+(48h2−2800h+43200)X12(3)+(48h3−288h2+3144h−1131120)F12.\begin{align} \Theta_N^{(3)} ={}& (E_4^{(3)})^3 + (24h-720)Y_{12}^{(3)} + (48h^2-2800h+43200)X_{12}^{(3)} \nonumber\\ &+ (48h^3-288h^2+3144h-1131120)F_{12}. \label{eq:genus3} \end{align}

Thus d(3)=4.d(3)=4.

Since ΘN(g)\Theta_N^{(g)} depends only on hh for g≤3g\leq3, lattices within each of the five collision classes have identical scalar theta series in every genus g≤3g\leq3. Therefore gsep≥4.g_{\mathrm{sep}}\geq4.

Fourier Expansion and the I4I_4-Coefficient

Let Sym⁡g*(ℤ)\operatorname{Sym}_g^*(\mathbb Z) denote the lattice of half-integral symmetric g×gg\times g matrices: Sym⁡g*(ℤ)={T=(tij)∈Mat⁡g×g(ℚ):T=T𝖳,tii∈ℤ,2tij∈ℤ}.\operatorname{Sym}_g^*(\mathbb Z) = \left\{ T=(t_{ij})\in\operatorname{Mat}_{g\times g}(\mathbb Q): T=T^{\mathsf T},\ t_{ii}\in\mathbb Z,\ 2t_{ij}\in\mathbb Z \right\}.

The Fourier expansion of ΘL(g)\Theta_L^{(g)} is ΘL(g)(Z)=∑T∈Sym⁡g*(ℤ)≥0a(T,ΘL(g))exp⁡(2πitr⁡(TZ)),\Theta_L^{(g)}(Z) = \sum_{T\in\operatorname{Sym}_g^*(\mathbb Z)_{\geq0}} a(T,\Theta_L^{(g)}) \exp(2\pi i\,\operatorname{tr}(TZ)), where a(T,ΘL(g))=#{X=(x1,…,xg)∈Lg:12X𝖳X=T}.a(T,\Theta_L^{(g)}) = \#\left\{ X=(x_1,\dots,x_g)\in L^g: \frac12X^{\mathsf T}X=T \right\}.

Proposition 3. For any even lattice LL, a(I4,ΘL(4))a(I_4,\Theta_L^{(4)}) equals the number of ordered 44-tuples (x1,x2,x3,x4)∈L4(x_1,x_2,x_3,x_4)\in L^4 of mutually orthogonal roots of LL.

Proof. The matrix condition 12X𝖳X=I4\frac12X^{\mathsf T}X=I_4 is equivalent to (xi,xj)=2δij(1≤i,j≤4).(x_i,x_j)=2\delta_{ij} \qquad (1\leq i,j\leq4). Thus the vectors xix_i are pairwise orthogonal and satisfy (xi,xi)=2.(x_i,x_i)=2. Since LL is even, such vectors are precisely roots of LL. ◻

Orthogonal Frame Enumeration in ADE Root Systems

For an irreducible simply-laced root system XX, let Nk(X)N_k(X) denote the number of ordered kk-tuples of mutually orthogonal roots. We define the truncated exponential generating function FX(t)=∑k=04Nk(X)k!tk.F_X(t) = \sum_{k=0}^4\frac{N_k(X)}{k!}t^k.

The AnA_n Family

Lemma 4. For the root system An⊂ℝn+1,A_n\subset\mathbb R^{n+1}, one has Nk(An)=(n+1)2k_,N_k(A_n) = (n+1)^{\underline{2k}}, and hence FAn(t)=∑k=0⌊(n+1)/2⌋(n+1)2k_k!tk.F_{A_n}(t) = \sum_{k=0}^{\lfloor(n+1)/2\rfloor} \frac{(n+1)^{\underline{2k}}}{k!}t^k.

Proof. The roots of AnA_n are ±(ei−ej),1≤i≠j≤n+1.\pm(e_i-e_j), \qquad 1\leq i\neq j\leq n+1. Two roots are orthogonal precisely when their index supports {i,j}\{i,j\} are disjoint.

To construct an ordered kk-tuple of mutually orthogonal roots, choose for the first root an ordered pair of distinct indices. There are (n+1)n=(n+1)2_(n+1)n=(n+1)^{\underline2} choices. For the second root there are (n−1)(n−2)=(n−1)2_(n-1)(n-2)=(n-1)^{\underline2} choices, and so on. Therefore Nk(An)=∏r=1k(n+3−2r)2_=(n+1)2k_.N_k(A_n) = \prod_{r=1}^k(n+3-2r)^{\underline2} = (n+1)^{\underline{2k}}. ◻

The DnD_n Family

Lemma 5. For the root system Dn⊂ℝn,n≥4,D_n\subset\mathbb R^n, \qquad n\geq4, the number of ordered mutually orthogonal kk-frames is Nk(Dn)=k!∑p=0⌊k/2⌋2k−pp!(k−2p)!n2k−2p_.N_k(D_n) = k! \sum_{p=0}^{\lfloor k/2\rfloor} \frac{2^{k-p}}{p!(k-2p)!} n^{\underline{2k-2p}}.

Proof. The roots of DnD_n are ±ei±ej,1≤i<j≤n.\pm e_i\pm e_j, \qquad 1\leq i<j\leq n.

Let α=siei+sjej,β=skek+slel.\alpha=s_ie_i+s_je_j, \qquad \beta=s_ke_k+s_le_l. If the supports are disjoint, then (α,β)=0.(\alpha,\beta)=0. If the supports meet in exactly one index, then (α,β)=±1≠0.(\alpha,\beta)=\pm1\neq0. If the supports are identical, then two roots are orthogonal precisely when their signs differ in exactly one coordinate. For each fixed support {i,j}\{i,j\} there are four roots, and each root has two orthogonal roots on the same support. Hence there are 4⋅2=84\cdot2=8 ordered orthogonal pairs on a fixed support.

Consequently, in a mutually orthogonal kk-tuple, the coordinate supports are pairwise disjoint except that a support may occur twice.

Suppose that pp supports occur twice and the remaining q=k−2pq=k-2p supports occur once. Thus there are p+q=k−pp+q=k-p distinct supports.

First partition the kk ordered positions into pp double blocks and qq singleton blocks. The number of such partitions is k!p!2p(k−2p)!.\frac{k!}{p!\,2^p\,(k-2p)!}.

Assign an ordered sequence of k−pk-p disjoint two-element supports. The number of such assignments is n2(k−p)_2k−p.\frac{n^{\underline{2(k-p)}}}{2^{k-p}}.

For each of the pp double supports there are 88 ordered pairs of orthogonal roots, while for each of the qq singleton supports there are 44 root choices. Thus the total number of sign assignments is 8p4k−2p=23p22k−4p=22k−p.8^p4^{k-2p} = 2^{3p}2^{2k-4p} = 2^{2k-p}.

Multiplying gives k!p!2p(k−2p)!⋅n2k−2p_2k−p⋅22k−p=k!2k−pp!(k−2p)!n2k−2p_.\begin{align*} &\frac{k!}{p!\,2^p\,(k-2p)!} \cdot \frac{n^{\underline{2k-2p}}}{2^{k-p}} \cdot 2^{2k-p} \\ &\qquad = k! \frac{2^{k-p}}{p!(k-2p)!} n^{\underline{2k-2p}}. \end{align*}

Summing over 0≤p≤⌊k/2⌋0\leq p\leq\lfloor k/2\rfloor proves the formula. ◻

Dividing by k!k! gives FDn(t)=1+2n2_t+(2n2_+2n4_)t2+(4n4_+43n6_)t3+(2n4_+4n6_+23n8_)t4.\begin{equation} F_{D_n}(t) = 1 + 2n^{\underline2}t + \left( 2n^{\underline2}+2n^{\underline4} \right)t^2 + \left( 4n^{\underline4} +\frac43n^{\underline6} \right)t^3 + \left( 2n^{\underline4} +4n^{\underline6} +\frac23n^{\underline8} \right)t^4. \label{eq:FDn} \end{equation}

The Exceptional Systems E6,E7,E8E_6,E_7,E_8

The exceptional cases can be handled by successive determination of orthogonal root subsystems. When more than one orbit of possible choices occurs, the cases are treated separately.

Lemma 6. The ordered orthogonal kk-frame counts for the exceptional root systems are N1(E6)=72,N2(E6)=2160,N3(E6)=25920,N4(E6)=51840,N1(E7)=126,N2(E7)=7560,N3(E7)=196560,N4(E7)=1814400,N1(E8)=240,N2(E8)=30240,N3(E8)=1814400,N4(E8)=47174400.\begin{align*} N_1(E_6)&=72, & N_2(E_6)&=2160, & N_3(E_6)&=25920, & N_4(E_6)&=51840, \\ N_1(E_7)&=126, & N_2(E_7)&=7560, & N_3(E_7)&=196560, & N_4(E_7)&=1814400, \\ N_1(E_8)&=240, & N_2(E_8)&=30240, & N_3(E_8)&=1814400, & N_4(E_8)&=47174400. \end{align*}

Proof. For E8E_8, there are 240240 roots. The orthogonal root subsystem of a root is E7E_7, which has 126126 roots. After choosing a second mutually orthogonal root, the remaining orthogonal root subsystem is D6D_6, which has 4(62)=604\binom62=60 roots. After a third choice, the remaining orthogonal root subsystem is D4⊕A1,D_4\oplus A_1, with 4(42)+2=264\binom42+2=26 roots. Hence N1(E8)=240,N_1(E_8)=240, N2(E8)=240⋅126=30240,N_2(E_8)=240\cdot126=30240, N3(E8)=30240⋅60=1814400,N_3(E_8)=30240\cdot60=1814400, and N4(E8)=1814400⋅26=47174400.N_4(E_8) = 1814400\cdot26 = 47174400.

For E7E_7, there are 126126 roots. The orthogonal root subsystem of a root is D6D_6, with 6060 roots. The orthogonal subsystem of a root in D6D_6 is D4⊕A1,D_4\oplus A_1, with 2626 roots.

To count the final two choices inside D4⊕A1D_4\oplus A_1, there are two cases. If the third root lies in D4D_4, there are 2424 choices and the remaining subsystem contains A1⊕3⊕A1,A_1^{\oplus3}\oplus A_1, with 88 roots. If the third root lies in the A1A_1 component, there are 22 choices and the remaining subsystem is D4D_4, with 2424 roots. Therefore the number of ordered pairs of final choices is 24⋅8+2⋅24=240.24\cdot8+2\cdot24=240. Thus N1(E7)=126,N_1(E_7)=126, N2(E7)=126⋅60=7560,N_2(E_7)=126\cdot60=7560, N3(E7)=7560⋅26=196560,N_3(E_7)=7560\cdot26=196560, and N4(E7)=126⋅60⋅240=1814400.N_4(E_7)=126\cdot60\cdot240=1814400.

For E6E_6, there are 7272 roots. The successive orthogonal root subsystems are E6⊃A5⊃A3⊃A1,E_6\supset A_5\supset A_3\supset A_1, with respectively 72,30,12,272,\qquad30,\qquad12,\qquad2 roots. Hence N1(E6)=72,N_1(E_6)=72, N2(E6)=72⋅30=2160,N_2(E_6)=72\cdot30=2160, N3(E6)=2160⋅12=25920,N_3(E_6)=2160\cdot12=25920, and N4(E6)=25920⋅2=51840.N_4(E_6)=25920\cdot2=51840. ◻

Dividing by k!k! gives FE6(t)=1+72t+1080t2+4320t3+2160t4,FE7(t)=1+126t+3780t2+32760t3+75600t4,FE8(t)=1+240t+15120t2+302400t3+1965600t4.\begin{align} F_{E_6}(t) &= 1+72t+1080t^2+4320t^3+2160t^4, \nonumber\\ F_{E_7}(t) &= 1+126t+3780t^2+32760t^3+75600t^4, \nonumber\\ F_{E_8}(t) &= 1+240t+15120t^2+302400t^3+1965600t^4. \label{eq:exceptional_polynomials} \end{align}

Assembly and Separation of Collision Classes

Theorem 7 (Frame Assembly Theorem). Let NN be a Niemeier lattice with root system Roots⁡(N)=⨁iXimi.\operatorname{Roots}(N)=\bigoplus_i X_i^{m_i}. Then a(I4,ΘN(4))=4![t4]∏iFXi(t)mi.\boxed{ a(I_4,\Theta_N^{(4)}) = 4!\,[t^4] \prod_iF_{X_i}(t)^{m_i}. } Equivalently, a(I4,ΘN(4))=24[t4]∏iFXi(t)mi.a(I_4,\Theta_N^{(4)}) = 24\,[t^4] \prod_iF_{X_i}(t)^{m_i}.

Proof. An ordered orthogonal 44-frame in NN decomposes uniquely according to the number kik_i of vectors lying in the ii-th irreducible component, with ∑iki=4.\sum_i k_i=4. For a fixed collection (ki)(k_i), the number of ways to interleave the vectors among the four ordered positions is 4!∏iki!.\frac{4!}{\prod_i k_i!}. Therefore a(I4,ΘN(4))=∑∑iki=44!∏iki!∏iNki(Xi)=4![t4]∏i(∑k=04Nk(Xi)k!tk)mi.\begin{align*} a(I_4,\Theta_N^{(4)}) &= \sum_{\sum_i k_i=4} \frac{4!}{\prod_i k_i!} \prod_iN_{k_i}(X_i) \\ &= 4! [t^4] \prod_i \left( \sum_{k=0}^4 \frac{N_k(X_i)}{k!}t^k \right)^{m_i}. \end{align*} The expression in parentheses is precisely FXi(t)F_{X_i}(t). ◻

Proposition 8 (Separation of the Five Collision Classes). The five pairs of Niemeier lattices with identical Coxeter numbers are strictly distinguished by a(I4,ΘN(4))a(I_4,\Theta_N^{(4)}). More precisely: $$\begin{array}{c l r r r} \toprule h & \text{Collision Pair} & a(I_4,\Theta_{N_1}^{(4)}) & a(I_4,\Theta_{N_2}^{(4)}) & \Delta a(I_4) \\ \midrule 6 & (A_5^4D_4,\;D_4^6) & 182\,460\,672 & 182\,691\,072 & 230\,400 \\ 10 & (A_9^2D_6,\;D_6^4) & 1\,247\,097\,600 & 1\,249\,171\,200 & 2\,073\,600 \\ 12 & (A_{11}D_7E_6,\;E_6^4) & 2\,510\,544\,384 & 2\,515\,152\,384 & 4\,608\,000 \\ 18 & (A_{17}E_7,\;D_{10}E_7^2) & 12\,074\,469\,120 & 12\,098\,661\,120 & 24\,192\,000 \\ 30 & (D_{16}E_8,\;E_8^3) & 89\,551\,929\,600 & 89\,758\,368\,000 & 206\,438\,400 \\ \bottomrule \end{array}$$ In every case, Δa(I4)>0.\Delta a(I_4)>0.

Proof. By Theorem 7, each value is obtained by expanding ∏iFXi(t)mi\prod_iF_{X_i}(t)^{m_i} and extracting the coefficient of t4t^4.

The resulting differences are 230400,2073600,4608000,24192000,206438400,230\,400,\quad 2\,073\,600,\quad 4\,608\,000,\quad 24\,192\,000,\quad 206\,438\,400, respectively. Each is strictly positive, so the I4I_4-coefficient distinguishes the two lattices in every Coxeter-number collision class. ◻

Proof of Theorem 1

Proof of Theorem 1. Let N1,N2∈𝒩24N_1,N_2\in\mathcal N_{24} with N1≠N2N_1\neq N_2.

If h(N1)≠h(N2),h(N_1)\neq h(N_2), then ΘN1(1)≠ΘN2(1)\Theta_{N_1}^{(1)} \neq \Theta_{N_2}^{(1)} by Lemma 2. Hence ΘN1(4)≠ΘN2(4).\Theta_{N_1}^{(4)} \neq \Theta_{N_2}^{(4)}.

Suppose instead that h(N1)=h(N2).h(N_1)=h(N_2). Then (N1,N2)(N_1,N_2) is one of the five collision pairs listed in Proposition 8. For each such pair, a(I4,ΘN1(4))≠a(I4,ΘN2(4)),a(I_4,\Theta_{N_1}^{(4)}) \neq a(I_4,\Theta_{N_2}^{(4)}), so ΘN1(4)≠ΘN2(4).\Theta_{N_1}^{(4)} \neq \Theta_{N_2}^{(4)}.

Thus the genus-four scalar theta series are pairwise distinct.

Conversely, for every g≤3g\leq3, equations [eq:genus1], [eq:genus2], and [eq:genus3] show that ΘN1(g)=ΘN2(g)\Theta_{N_1}^{(g)} = \Theta_{N_2}^{(g)} whenever h(N1)=h(N2).h(N_1)=h(N_2). Since the five collision classes contain non-isometric pairs, genus g≤3g\leq3 cannot separate all 2424 lattices.

Therefore gsep=4.\boxed{g_{\mathrm{sep}}=4}. ◻

Pairwise Separation Versus Linear Independence

Let Vg=span⁡ℂ{ΘN(g):N∈𝒩24}⊂M12(Sp⁡2g(ℤ))V_g = \operatorname{span}_{\mathbb C} \{\Theta_N^{(g)}:N\in\mathcal N_{24}\} \subset M_{12}(\operatorname{Sp}_{2g}(\mathbb Z)) and write d(g)=dim⁡ℂVg.d(g)=\dim_{\mathbb C}V_g.

Borcherds, Freitag, and Weissauer proved that the 2424 Niemeier theta series are linearly dependent for g≤11g\leq11 and linearly independent in degree 1212. Thus d(12)=24.d(12)=24.

Their work also produces a cusp form of degree 1212 and weight 1212 as an appropriate linear combination of the Niemeier theta series.

The structural hierarchy is therefore: g=1:d(1)=2,ΘN(1) depends linearly on h,g=2:d(2)=3,ΘN(2) depends quadratically on h,g=3:d(3)=4,ΘN(3) depends cubically on h,g=4:𝐏𝐚𝐢𝐫𝐰𝐢𝐬𝐞 𝐬𝐞𝐩𝐚𝐫𝐚𝐭𝐢𝐨𝐧 𝐛𝐲 a(I4),5≤g≤11:d(g)<24,g=12:𝐅𝐮𝐥𝐥 𝐥𝐢𝐧𝐞𝐚𝐫 𝐢𝐧𝐝𝐞𝐩𝐞𝐧𝐝𝐞𝐧𝐜𝐞: d(12)=24.\boxed{ \begin{aligned} g=1 &: \quad d(1)=2, \quad \Theta_N^{(1)} \text{ depends linearly on }h, \\[1mm] g=2 &: \quad d(2)=3, \quad \Theta_N^{(2)} \text{ depends quadratically on }h, \\[1mm] g=3 &: \quad d(3)=4, \quad \Theta_N^{(3)} \text{ depends cubically on }h, \\[1mm] g=4 &: \quad \textbf{Pairwise separation by }a(I_4), \\[1mm] 5\leq g\leq11 &: \quad d(g)<24, \\[1mm] g=12 &: \quad \textbf{Full linear independence: }d(12)=24. \end{aligned} }

It is important to distinguish the genus-four separation result from linear independence. Pairwise distinct theta series can remain highly linearly dependent. In particular, the genus-four result does not contradict the BFW theorem.

Complete Genus-Four Spectrum

The preceding proof only requires the five equal-Coxeter-number collision classes. As a computational corollary, however, the same frame-assembly formula can be evaluated for every Niemeier root system.

The resulting a(I4)a(I_4)-values are pairwise distinct across all 2424 Niemeier lattices.

Complete genus-four spectrum of the invariant a(I4,ΘN(4))a(I_4,\Theta_N^{(4)}) across all 2424 Niemeier lattices.
Lattice NN Root System Roots⁡(N)\operatorname{Roots}(N) Coxeter hh a(I4,ΘN(4))a(I_4,\Theta_N^{(4)})
Λ24\Lambda_{24} ∅\emptyset (Leech) 00 00
N(A124)N(A_1^{24}) A124A_1^{24} 22 40803844\,080\,384
N(A212)N(A_2^{12}) A212A_2^{12} 33 1539648015\,396\,480
N(A38)N(A_3^8) A38A_3^8 44 4190054441\,900\,544
N(A46)N(A_4^6) A46A_4^6 55 9345600093\,456\,000
N(A54D4)N(A_5^4D_4) A54D4A_5^4D_4 66 𝟏𝟖𝟐𝟒𝟔𝟎𝟔𝟕𝟐\mathbf{182\,460\,672}
N(D46)N(D_4^6) D46D_4^6 66 𝟏𝟖𝟐𝟔𝟗𝟏𝟎𝟕𝟐\mathbf{182\,691\,072}
N(A64)N(A_6^4) A64A_6^4 77 323616384323\,616\,384
N(A72D52)N(A_7^2D_5^2) A72D52A_7^2D_5^2 88 534850560534\,850\,560
N(A83)N(A_8^3) A83A_8^3 99 834551424834\,551\,424
N(A92D6)N(A_9^2D_6) A92D6A_9^2D_6 1010 𝟏𝟐𝟒𝟕𝟎𝟗𝟕𝟔𝟎𝟎\mathbf{1\,247\,097\,600}
N(D64)N(D_6^4) D64D_6^4 1010 𝟏𝟐𝟒𝟗𝟏𝟕𝟏𝟐𝟎𝟎\mathbf{1\,249\,171\,200}
N(A11D7E6)N(A_{11}D_7E_6) A11D7E6A_{11}D_7E_6 1212 𝟐𝟓𝟏𝟎𝟓𝟒𝟒𝟑𝟖𝟒\mathbf{2\,510\,544\,384}
N(E64)N(E_6^4) E64E_6^4 1212 𝟐𝟓𝟏𝟓𝟏𝟓𝟐𝟑𝟖𝟒\mathbf{2\,515\,152\,384}
N(A122)N(A_{12}^2) A122A_{12}^2 1313 34125062403\,412\,506\,240
N(D83)N(D_8^3) D83D_8^3 1414 45536279044\,553\,627\,904
N(A15D9)N(A_{15}D_9) A15D9A_{15}D_9 1616 76315115527\,631\,511\,552
N(A17E7)N(A_{17}E_7) A17E7A_{17}E_7 1818 𝟏𝟐𝟎𝟕𝟒𝟒𝟔𝟗𝟏𝟐𝟎\mathbf{12\,074\,469\,120}
N(D10E72)N(D_{10}E_7^2) D10E72D_{10}E_7^2 1818 𝟏𝟐𝟎𝟗𝟖𝟔𝟔𝟏𝟏𝟐𝟎\mathbf{12\,098\,661\,120}
N(D122)N(D_{12}^2) D122D_{12}^2 2222 2646194918426\,461\,949\,184
N(A24)N(A_{24}) A24A_{24} 2525 4360910400043\,609\,104\,000
N(D16E8)N(D_{16}E_8) D16E8D_{16}E_8 3030 𝟖𝟗𝟓𝟓𝟏𝟗𝟐𝟗𝟔𝟎𝟎\mathbf{89\,551\,929\,600}
N(E83)N(E_8^3) E83E_8^3 3030 𝟖𝟗𝟕𝟓𝟖𝟑𝟔𝟖𝟎𝟎𝟎\mathbf{89\,758\,368\,000}
N(D24)N(D_{24}) D24D_{24} 4646 483782568192483\,782\,568\,192

Computational Verification Script

The following self-contained Python script performs two independent checks. First, it constructs selected ADE root systems explicitly and counts orthogonal frames geometrically. Second, it evaluates the symbolic frame-generating functions and verifies the five Coxeter-number collision classes and the complete 2424-lattice spectrum.

import itertools
import numpy as np
import sympy as sp

# ==============================================================================
# ROUTE 1: PURE GEOMETRIC ROOT SYSTEM GENERATION & FRAME COUNTING
# ==============================================================================

def build_Dn_roots(n):
    roots = []
    for i in range(n):
        for j in range(i + 1, n):
            for s1 in [1.0, -1.0]:
                for s2 in [1.0, -1.0]:
                    v = np.zeros(n)
                    v[i], v[j] = s1, s2
                    roots.append(v)
    return np.array(roots)


def build_E8_roots():
    roots = []

    # Roots of the form +/-e_i +/-e_j
    for i in range(8):
        for j in range(i + 1, 8):
            for s1 in [1.0, -1.0]:
                for s2 in [1.0, -1.0]:
                    v = np.zeros(8)
                    v[i], v[j] = s1, s2
                    roots.append(v)

    # Half-integral roots with an even number of minus signs
    for s in itertools.product([0.5, -0.5], repeat=8):
        if sum(1 for x in s if x < 0) % 2 == 0:
            roots.append(np.array(s))

    return np.array(roots)


def geometric_k_frame_counts(roots, max_k=4):
    N = len(roots)
    G = np.round(roots @ roots.T, 4)

    # adj[i] = roots orthogonal to roots[i]
    adj = [
        np.where(np.abs(G[i]) < 1e-4)[0]
        for i in range(N)
    ]

    counts = {1: N}

    if max_k >= 2:
        counts[2] = sum(len(adj[i]) for i in range(N))

    if max_k >= 3:
        c3 = 0
        for i in range(N):
            for j in adj[i]:
                c3 += len(
                    np.intersect1d(
                        adj[i],
                        adj[j],
                        assume_unique=True
                    )
                )
        counts[3] = c3

    if max_k >= 4:
        c4 = 0
        for i in range(N):
            for j in adj[i]:
                c_ij = np.intersect1d(
                    adj[i],
                    adj[j],
                    assume_unique=True
                )
                for m in c_ij:
                    c4 += len(
                        np.intersect1d(
                            c_ij,
                            adj[m],
                            assume_unique=True
                        )
                    )
        counts[4] = c4

    return counts


# Geometric checks for D_4 and D_5
d4_geo = geometric_k_frame_counts(build_Dn_roots(4))
assert d4_geo == {
    1: 24,
    2: 144,
    3: 576,
    4: 1152
}

d5_geo = geometric_k_frame_counts(build_Dn_roots(5))
assert d5_geo == {
    1: 40,
    2: 560,
    3: 2880,
    4: 5760
}


# Geometric checks for E_8
e8_roots = build_E8_roots()

e8_geo = geometric_k_frame_counts(e8_roots)

assert e8_geo == {
    1: 240,
    2: 30240,
    3: 1814400,
    4: 47174400
}


# Obtain E_7 as the roots of E_8 orthogonal to a root
r0 = np.array([1.0, 1.0, 0, 0, 0, 0, 0, 0])

e7_roots = e8_roots[
    np.abs(e8_roots @ r0) < 1e-4
]

e7_geo = geometric_k_frame_counts(e7_roots)

assert e7_geo == {
    1: 126,
    2: 7560,
    3: 196560,
    4: 1814400
}


# ==============================================================================
# ROUTE 2: SYMBOLIC FRAME GENERATING FUNCTIONS
# ==============================================================================

t = sp.Symbol('t')


def fall(n, m):
    return sp.prod(
        [n - j for j in range(m)]
    )


def F_A(n):
    return sum(
        fall(n + 1, 2 * k)
        // sp.factorial(k)
        * t**k
        for k in range(
            min(5, (n + 1) // 2 + 1)
        )
    )


def F_D(n):
    return (
        1
        + 2 * fall(n, 2) * t
        + (
            2 * fall(n, 2)
            + 2 * fall(n, 4)
        ) * t**2
        + (
            4 * fall(n, 4)
            + sp.Rational(4, 3) * fall(n, 6)
        ) * t**3
        + (
            2 * fall(n, 4)
            + 4 * fall(n, 6)
            + sp.Rational(2, 3) * fall(n, 8)
        ) * t**4
    )


# Verify symbolic D_n formula against geometric counts
for n in [4, 5]:
    poly = F_D(n)
    geo = geometric_k_frame_counts(
        build_Dn_roots(n)
    )

    for k in range(1, 5):
        assert int(
            sp.factorial(k) * poly.coeff(t, k)
        ) == geo[k]


polys = {
    'A1': F_A(1),
    'A2': F_A(2),
    'A3': F_A(3),
    'A4': F_A(4),
    'A5': F_A(5),
    'A6': F_A(6),
    'A7': F_A(7),
    'A8': F_A(8),
    'A9': F_A(9),
    'A11': F_A(11),
    'A12': F_A(12),
    'A15': F_A(15),
    'A17': F_A(17),
    'A24': F_A(24),

    'D4': F_D(4),
    'D5': F_D(5),
    'D6': F_D(6),
    'D7': F_D(7),
    'D8': F_D(8),
    'D9': F_D(9),
    'D10': F_D(10),
    'D12': F_D(12),
    'D16': F_D(16),
    'D24': F_D(24),

    'E6':
        1
        + 72*t
        + 1080*t**2
        + 4320*t**3
        + 2160*t**4,

    'E7':
        1
        + 126*t
        + 3780*t**2
        + 32760*t**3
        + 75600*t**4,

    'E8':
        1
        + 240*t
        + 15120*t**2
        + 302400*t**3
        + 1965600*t**4
}


def a_I4(comps):
    if not comps:
        return 0

    P = sp.prod(
        [polys[c]**m for c, m in comps]
    )

    return int(
        24 * P.expand().coeff(t, 4)
    )


# ==============================================================================
# COLLISION-CLASS VERIFICATION
# ==============================================================================

collisions = [
    (
        6,
        "A5^4 D4",
        [('A5', 4), ('D4', 1)],
        "D4^6",
        [('D4', 6)]
    ),
    (
        10,
        "A9^2 D6",
        [('A9', 2), ('D6', 1)],
        "D6^4",
        [('D6', 4)]
    ),
    (
        12,
        "A11 D7 E6",
        [('A11', 1), ('D7', 1), ('E6', 1)],
        "E6^4",
        [('E6', 4)]
    ),
    (
        18,
        "A17 E7",
        [('A17', 1), ('E7', 1)],
        "D10 E7^2",
        [('D10', 1), ('E7', 2)]
    ),
    (
        30,
        "D16 E8",
        [('D16', 1), ('E8', 1)],
        "E8^3",
        [('E8', 3)]
    ),
]


for h, n1, c1, n2, c2 in collisions:
    v1 = a_I4(c1)
    v2 = a_I4(c2)

    assert v2 > v1, (
        f"Separation failed at h={h}"
    )


# ==============================================================================
# COMPLETE 24-LATTICE INJECTIVITY CHECK
# ==============================================================================

all_24 = [
    ("Leech", []),

    ("A1^24",
     [('A1', 24)]),

    ("A2^12",
     [('A2', 12)]),

    ("A3^8",
     [('A3', 8)]),

    ("A4^6",
     [('A4', 6)]),

    ("A5^4 D4",
     [('A5', 4), ('D4', 1)]),

    ("D4^6",
     [('D4', 6)]),

    ("A6^4",
     [('A6', 4)]),

    ("A7^2 D5^2",
     [('A7', 2), ('D5', 2)]),

    ("A8^3",
     [('A8', 3)]),

    ("A9^2 D6",
     [('A9', 2), ('D6', 1)]),

    ("D6^4",
     [('D6', 4)]),

    ("A11 D7 E6",
     [('A11', 1), ('D7', 1), ('E6', 1)]),

    ("E6^4",
     [('E6', 4)]),

    ("A12^2",
     [('A12', 2)]),

    ("D8^3",
     [('D8', 3)]),

    ("A15 D9",
     [('A15', 1), ('D9', 1)]),

    ("A17 E7",
     [('A17', 1), ('E7', 1)]),

    ("D10 E7^2",
     [('D10', 1), ('E7', 2)]),

    ("D12^2",
     [('D12', 2)]),

    ("A24",
     [('A24', 1)]),

    ("D16 E8",
     [('D16', 1), ('E8', 1)]),

    ("E8^3",
     [('E8', 3)]),

    ("D24",
     [('D24', 1)])
]


spectrum = [
    a_I4(comps)
    for name, comps in all_24
]

assert len(spectrum) == 24

assert len(set(spectrum)) == 24, (
    "Spectrum values are not all distinct"
)


print(
    "All geometric checks, collision separations, "
    "and 24-spectrum verifications passed."
)

# ============================================================

References

99

R. E. Borcherds, E. Freitag, and R. Weissauer, A Siegel cusp form of degree 1212 and weight 1212, J. Reine Angew. Math. 494 (1998), 141–153.

J. H. Conway, The 23 Niemeier lattices and the 23 deep holes of the Leech lattice, Proc. R. Soc. Lond. A 380 (1982), 177–187.

J. H. Conway and N. J. A. Sloane, Sphere Packings, Lattices and Groups, 3rd ed., Grundlehren der mathematischen Wissenschaften, vol. 290, Springer-Verlag, New York, 1999.

V. A. Erokhin, Theta series of even unimodular 24-dimensional lattices, Zap. Nauchn. Sem. Leningrad. Otdel. Mat. Inst. Steklov. (LOMI) 116 (1982), 68–73.

S. Nagaoka and S. Takemori, Notes on theta series of Niemeier lattices in genus two, Abh. Math. Semin. Univ. Hambg. 87 (2017), no. 2, 269–281.

S. Nagaoka and S. Takemori, Notes on theta series for Niemeier lattices, Ramanujan J. 42 (2017), no. 2, 385–400.

H.-V. Niemeier, Definite quadratische Formen der Dimension 24 und Diskriminante 1, J. Number Theory 5 (1973), 142–178.

B. B. Venkov, Even unimodular extremal lattices, Trudy Mat. Inst. Steklov. 165 (1984), 43–48; Proc. Steklov Inst. Math. 165 (1985), 47–52.