### 1.48.5 Βραχεία (σχεδόν ορθόγωνη) βάση πλέγματος : `lll`

`lll` παίρνει ως όρισμα έναν αντιστρέψιμο πίνακα M με ακέραιους συντελεστές.
`lll` επιστρέφει (S,A,L,O) έτσι ώστε:

- οι γραμμές του S είναι η βραχεία βάση του ℤ-προτύπου, η παραγόμενη από τις γραμμές του M,
- A είναι ο πίνακας-αλλαγής-βάσης από την βραχεία βάση στην βάση που ορίζεται από τις γραμμές του M (A*M=S),
- L είναι ένας κάτω τριγωνικός πίνακας, στον οποίο το μέτρο των μη διαγώνιων συντελεστών του είναι μικρότερο από 1/2,
- O είναι ένας πίνακας με ορθογώνιες γραμμές έτσι ώστε L*O=S.

Είσοδος :

`[S,A,L,O]:=lll(M:=[[2,1],[1,2]])`

Έξοδος :

`[[-1,1],[2,1]], [[-1,1],[1,0]], [[1,0],[1/-2,1]], [[-1,1],[3/2,3/2]]`

Επομένως :
`S=[[-1,1],[2,1]]`
`A=[[-1,1],[1,0]]`
`L=[[1,0],[1/-2,1]]`
`O=[[-1,1],[3/2,3/2]]`
Επομένως, η αρχική βάση είναι η `v1=[2,1], v2=[1,2]`
και η βραχεία βάση είναι η `w1=[-1,1], w2=[2,1]`.
Αφού `w1=-v1+v2` και `w2=v1` τότε :
`A:=[[-1,1],[1,0]]`, `A*M==S` και `L*O==S`.
Είσοδος :

`(S,A,L,O):=lll([[3,2,1],[1,2,3],[2,3,1]])`

Έξοδος :

`S=[[-1,1,0],[-1,-1,2],[3,2,1]]`
`A= [[-1,0,1],[0,1,-1],[1,0,0]]`
`L= [[1,0,0],[0,1,0],[(-1)/2,(-1)/2,1]]`
`O= [[-1,1,0],[-1,-1,2],[2,2,2]]`

Είσοδος :
`M:=[[3,2,1],[1,2,3],[2,3,1]]`
Ιδιότητες :
`A*M==S` και `L*O==S`