According to this paper the following matrix, L, generates the Leech lattice. In form it is a list of vectors with integer components, each belonging to the lattice. Linear combinations of them with integer coefficients compose the whole lattice. Each lattice point is represented just once.
(define L '( (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 0 2 0 2 2 0 0 2 0 2 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)))We scatter some Scheme code in this for corroboration:
(define tl ((fileVal "Matrix") '() 0 zero? 1 + - * /)) (define matm (cadr tl)) ; matrix multiply (define tr (car (cddddr tl))) ; transpose (define inv (caddr tl)) ; matrix invert (define det (cadr (cddddr tl))) ; determinant (define Li (inv L 'Sing)) ; inverse of LIf v belongs to ℤ24 (v is a 24D vector with integer components) then vL is a member of the Leech lattice and conversely.
(matm '((0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) L) ; => ((12 4 0 0 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))
The determinant of this square matrix is not zero and thus the vectors span the entire space (ℝ24). ( (det L) => 68719476736).
( (64 32 32 32 32 32 32 16 32 32 32 16 32 16 16 16 32 16 16 16 0 0 0 -24) (32 32 16 16 16 16 16 16 16 16 16 16 16 16 8 8 16 8 8 16 8 0 0 -8) (32 16 32 16 16 16 16 16 16 16 16 16 16 8 16 8 16 16 8 8 8 0 0 -8) (32 16 16 32 16 16 16 16 16 16 16 16 16 8 8 16 16 8 16 8 8 0 0 -8) (32 16 16 16 32 16 16 16 16 16 16 8 16 16 16 16 16 16 16 16 8 0 0 -8) (32 16 16 16 16 32 16 16 16 16 16 8 16 16 8 8 16 8 8 8 0 0 0 -8) (32 16 16 16 16 16 32 16 16 16 16 8 16 8 16 8 16 8 16 16 0 0 0 -8) (16 16 16 16 16 16 16 32 8 8 8 16 8 16 16 16 8 16 16 16 16 0 0 8) (32 16 16 16 16 16 16 8 32 16 16 16 16 16 16 16 16 16 16 16 8 8 8 -8) (32 16 16 16 16 16 16 8 16 32 16 16 16 16 8 8 16 16 16 8 0 8 0 -8) (32 16 16 16 16 16 16 8 16 16 32 16 16 8 16 8 16 8 8 8 0 0 8 -8) (16 16 16 16 8 8 8 16 16 16 16 32 8 16 16 16 8 16 16 16 16 8 8 8) (32 16 16 16 16 16 16 8 16 16 16 8 32 16 16 16 16 8 16 8 8 8 8 -8) (16 16 8 8 16 16 8 16 16 16 8 16 16 32 16 16 8 16 20 16 16 16 8 8) (16 8 16 8 16 8 16 16 16 8 16 16 16 16 32 16 8 16 24 16 16 8 16 8) (16 8 8 16 16 8 8 16 16 8 8 16 16 16 16 32 8 16 20 16 16 8 8 8) (32 16 16 16 16 16 16 8 16 16 16 8 16 8 8 8 32 16 16 16 8 8 8 -8) (16 8 16 8 16 8 8 16 16 16 8 16 8 16 16 16 16 32 20 16 16 16 8 8) (16 8 8 16 16 8 16 16 16 16 8 16 16 20 24 20 16 20 40 20 20 16 20 12) (16 16 8 8 16 8 16 16 16 8 8 16 8 16 16 16 16 16 20 32 16 8 8 8) ( 0 8 8 8 8 0 0 16 8 0 0 16 8 16 16 16 8 16 20 16 32 16 16 16) ( 0 0 0 0 0 0 0 0 8 8 0 8 8 16 8 8 8 16 16 8 16 32 16 16) ( 0 0 0 0 0 0 0 0 8 0 8 8 8 8 16 8 8 8 20 8 16 16 32 16) (-24 -8 -8 -8 -8 -8 -8 8 -8 -8 -8 8 -8 8 8 8 -8 8 12 8 16 16 16 32))This is reminiscent of our simpler oblique coördinates. I suspect that L could be adjusted to make it fit the pattern. I am suspicious of vector 18 of L whose length is √40. The other vectors with 2’s have eight 2’s.
I think that I understand the construction of the Leech lattice at the bottom of page 14. There is a bug however in the C24 given there:
R[6]: 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 R[3]: 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 t[72]: 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 (w=6)Perhaps other versions will do, such as Golay’s original which appears at the end of page 13:
(define G '( (1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1) (0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0) (0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 0) (0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 0) (0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0) (0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0) (0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1) (0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1) (0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1) (0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1) (0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 1) (0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1)))The weights of these generators are computed as (map (lambda (x) (apply + x)) G) which yields (12 8 8 8 8 8 8 8 8 8 8 8).
Contemplating a program to produce all of the lattice points in the cell [0, 7]24: There are 224 possibilities for the 4-bit in the 24 coordinates. Given one of those possibilities each 1-bit is determined. There remains the 212 Golay codes that inhabit the respective 2-bits. It would seem that there are 236 points to enumerate. This is daunting.
Lets review the rules that apply to the binary bits of the 24 integer coordinates of a point for the point to belong to the lattice. Either:
This formula agrees with the first clause but I do not understand the Golay restrictions there.
Going by intuition first we note that (0, 0, ..., 0) is in the lattice and nearby lattice points might look like (5, 1, 1, 1, ..., 1) considering that (0, 0, ... 0) is a Golay code.
(−3, 1, 1, 1, ... 1) is closer at a distance of √32.
Note that the binary form of −3 is ...11101 and the 4 bit is on.
There are 24 lattice points like this.
(−3, −1, −1, 1, 1, 1, ... 1) is also at distance √32 but that point is not in the lattice since the pattern in the 2-bits is not a Golay code.
(−3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, −1, −1, −1, 1, 1, 1, −1, 1, 1, −1, −1, −1, −1) is in the lattice since its 2-bits form a Golay code.
The −3 therein can be moved to any of the 24 positions and become a +3 if it displaces a −1; as in:
(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, −1, 3, −1, 1, 1, 1, −1, 1, 1, −1, −1, −1, −1)
There are thus 24∙212 = 98304 such lattice points, all at distance √32.
All of the other points with odd coordinates are farther away. Another close point is (4, 4, 0, 0, 0, ... 0) which is also at distance √32. (−4, 4, 0, 0, ... 0) are also in this category and there are 4∙24∙23/2 = 1104 in the category.
There are also the ‘pure Golay points’ such as
(0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2) at distance √32 from the origin.
The signs of an even number of the 2’s can be flipped while remaining in conformance with the 4-bit rule.
There are just 759 Golay codes of weight 8 and allowing for an even number of sign flips we have 128∙759 = 97152 lattice points of this sort.
Summing these three sorts of lattice point we get 98304 + 1104 + 97152 = 196560 (an oft quoted number) lattice points all at distance √32 from the origin.