15.3.11 Short basis of a lattice
The lll command finds a short basis for the
ℤ-modules generated by the rows of a matrix.
-
lll takes
M, an invertible matrix with integer coefficients.
- lll(M) returns the sequence (S,A,L,O) where:
-
the rows of S is a short basis of the ℤ-module
generated by the rows of M,
- A is the change-of-basis matrix from the short basis to the basis
defined by the rows of M (AM=S),
- L is a lower triangular matrix, the modulus of its non diagonal
coefficients are less than 1/2,
- O is a matrix with orthogonal rows such that LO=S.
Examples
(S,A,L,O):=lll(M:=[[2,1],[1,2]]) |
So the original basis is v1=[2,1], v2=[1,2]
and the short basis is w1=[−1,1], w2=[2,1].
Since w1=−v1+v2 and w2=v1 then
AM=S and LO=S.
As another example, input:
M:=[[3,2,1],[1,2,3],[2,3,1]]:;
S,A,L,O:=lll(M) |
|
| | , | | , | ⎡
⎢
⎢
⎢
⎢
⎢
⎣ | | ⎤
⎥
⎥
⎥
⎥
⎥
⎦ |
| , | |
| | | | | | | | | | |
|
Properties:
AM=S and LO=S.