How many orthogonal pairs of shortest vectors in the Leech lattice

integer-lattices

The Leech Lattice in $\mathbb{R}^{24}$ has 196,560 shortest vectors. Let $V$ be the set of all such vectors. For any pair of vectors $x,y \in V$, the inner product $<x,y>$ is an integer between $-4$ and $4$. If I fix one vector $v \in V$ (by symmetry, it doesn't matter which one), how many of the remaining shortest vectors are orthogonal to it? I.e., given $v \in V$, what is $| \{w \in V: <v, w> = 0 \}|$? This must be something that is well known, but I'm having trouble looking it up.

Best Answer

Unless I made a mistake (so much for reputable...), the answer is 93150. Here is how to compute it in GAP (you could call it from Sage...). First, start with the generators of the Leech lattice (as in Conway, Sloane; but Wikipedia has a version one can paste):

Leechgens:=[
[8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0],
[2,2,2,2,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0],
[4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0],
[2,2,0,0,2,2,0,0,2,2,0,0,2,2,0,0,0,0,0,0,0,0,0,0],
[2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,0,0,0,0,0,0,0,0],
[2,0,0,2,2,0,0,2,2,0,0,2,2,0,0,2,0,0,0,0,0,0,0,0],
[4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0],
[2,0,2,0,2,0,0,2,2,2,0,0,0,0,0,0,2,2,0,0,0,0,0,0],
[2,0,0,2,2,2,0,0,2,0,2,0,0,0,0,0,2,0,2,0,0,0,0,0],
[2,2,0,0,2,0,2,0,2,0,0,2,0,0,0,0,2,0,0,2,0,0,0,0],
[0,2,2,2,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0],
[0,0,0,0,0,0,0,0,2,2,0,0,2,2,0,0,2,2,0,0,2,2,0,0],
[0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0],
[-3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]*1/ER(8);

Now calculate the Gram matrix, and -- using it -- the vectors of length at most 4:

gap> gram:=List(Leechgens,x->List(Leechgens,y->x*y));;
gap> s:=ShortestVectors(gram,4);;

These are now coefficient vectors, so expand. Also we need to add negatives:

gap> short:=List(s.vectors,x->x*Leechgens);;
gap> short:=List(short,Immutable);; # so sets can remember they are sorted
gap> short:=Union(short,-short);;

We can verify the patterns of nonzero entries (as on p. 133 in Conway/Sloane)

gap> Collected(List(short,x->Number(x,y->not IsZero(y))));
[ [ 2, 1104 ], [ 8, 97152 ], [ 24, 98304 ] ]

And now, for the piece de resistance:

gap> Number(short,x->IsZero(x*short[1]));
93150
Related Question