An obvious extension of hexagonal sphere packing in 3D leads to a lattice in 24D described here in terms of an oblique coordinate system wherein the lattice points are just those points with all integer coördinates. The 24 independent vectors in a 25-lump span the 24D space but generate the oblique lattice where the ball at the origin touches only 300 neighbors. We observe a 25-clump (the standard clump) in the Leech lattice and deduce a sub-lattice thereof which is congruent with the oblique lattice. The density of the latter is much smaller (9.42∙10−8). The 24 vectors (−31, 123) do not generate the Leech lattice. They span the space as vectors using real coefficients but restricted to integer coefficients they do not generate (42, 030) for instance.
A list of these vectors forms a square matrix M with −3 on the diagonal and 1 elsewhere. If v is a vector with integer coefficients then vM is one of the generated oblique lattice points. If f = (4, 4, 0, 0, ... 0), f is in the Leech lattice and if f is generated by M then for some v ∊ ℤ24, vM = f and v = fM−1. We can compute this v and examine its coefficients to see if they are integers.
(let* ((M ((fileVal "GenDiag") 24 -3 1)) (f '(4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (tl ((fileVal "Matrix") '() 0 zero? 1 + - * /)) (inv (caddr tl)) (matmul (cadr tl))) (matmul (list f) (inv M 'Sing)))The above yields ((-9/10 -9/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10)) which indicates that there is more to the Leech lattice than the oblique lattice.
We explore further with some simple interactive Scheme tools:
(define M ((fileVal "GenDiag") 24 -3 1)) (define tl ((fileVal "Matrix") '() 0 zero? 1 + - * /)) (define (inv x) ((caddr tl) x 'Sing)) ; Invert matrix (define matmul (cadr tl)) ; multiply two matrices (define tr (car (cddddr tl))) ; transpose matrix (define det (cadr (cddddr tl))) ; determinant (define gr (fileVal "gr")) ; make scalar function into vector function. (define (stm s m) ((gr (gr (lambda (x) (* s x)))) m)) ; scalar times vector (define Mi (inv M)) ; inverse of M (define f '((4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))Now (matmul f Mi) yields the same as above. Indeed if f is a list of vectors expressed in the conventional Leech coordinates the (matmul f Mi) returns the list of the same vectors expressed in the oblique coördinates. The basis vectors for the oblique coördinates are those from the origin to one of the other members of the standard clump.
We see how some of the other Leech lattice points are located by oblique coördinates:
(matmul (list '(1 1 1 -3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) '(4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) '(0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 2 2 2 0 0 2 2) '(1 1 1 1 1 1 1 1 1 1 1 -1 3 -1 1 1 1 -1 1 1 -1 -1 -1 -1)) Mi)My computer replies:
((0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (-9/10 -9/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10 1/10) (1/5 1/5 1/5 1/5 1/5 1/5 1/5 -3/10 1/5 1/5 1/5 1/5 1/5 -3/10 1/5 -3/10 1/5 -3/10 -3/10 -3/10 1/5 1/5 -3/10 -3/10) (-1/10 -1/10 -1/10 -1/10 -1/10 -1/10 -1/10 -1/10 -1/10 -1/10 -1/10 2/5 -3/5 2/5 -1/10 -1/10 -1/10 2/5 -1/10 -1/10 2/5 2/5 2/5 2/5))We try shorter basis vectors in order to lessen clutter:
(matmul (list '(1 1 1 -3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) '(4 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) '(0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 2 0 2 2 2 0 0 2 2) '(1 1 1 1 1 1 1 1 1 1 1 -1 3 -1 1 1 1 -1 1 1 -1 -1 -1 -1)) (stm 10 Mi))yields:
((0 0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (-9 -9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (2 2 2 2 2 2 2 -3 2 2 2 2 2 -3 2 -3 2 -3 -3 -3 2 2 -3 -3) (-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 -6 4 -1 -1 -1 4 -1 -1 4 4 4 4))It would be good to find a set of generating vectors expressed in either of these two coördinate systems. Section 5.5 of this paper claims that this set of 25 vectors, (made by this program), generates the lattice. These 25 generating vectors can be replaced by 24 while losing a bit of their symmetry: The first 24 vectors generate twice the last using these coefficients:
(-19 16 -3 -3 -3 -3 -3 -3 -3 -3 -3 -3 1 1 1 1 1 1 1 1 1 1 1 1)See this.