CFLat is a GAP package computing the canonical filtration of an integral lattice.
Suppose L is a lattice (a discrete subgroup of R^n). For all sublattices M of L, plot the points ( dim(M), log vol(M) ) in the xy-plane, and consider the convex hull of the plot. It is bounded below by a convex polygon. It turns out that the vertices of the polygon is represented by a unique sublattice of L, and that the sublattices representing vertices form a chain. This chain is called the canonical filtration of L.
The command 'CanonicalFiltrationGram( )' accepts the Gram matrix of a lattice (positive definite square matrix) as an argument. It returns a record with the following entries.
< dims > - the dimensions of sublattices in the canonical filtration.
< dets > - the determinants of sublattices in the canonical filtration.
< basis > - the basis of the lattice generating the canonical filtration.
Here is a brief example.
gap> A := [[2,1,0,0],[1,2,0,0],[0,0,1,0],[0,0,0,3]];; Display(A);
[ [ 2, 1, 0, 0 ],
[ 1, 2, 0, 0 ],
[ 0, 0, 1, 0 ],
[ 0, 0, 0, 3 ] ]
gap> CanonicalFiltrationGram(A);
rec( dims := [ 0, 1, 3, 4 ], dets := [ 1, 1, 3, 9 ],
basis := [ [ 0, 0, 1, 0 ], [ -1, 0, 1, 0 ], [ 0, -1, 0, 0 ], [ 0, 1, 0, 1 ] ] )
In this example, the canonical filtration of the lattice with the Gram matrix A consists of four sublattices:
the zero lattice, the 1-dimensional sublattice generated by (0,0,1,0), the 3-dimensional sublattice generated by { (0,0,1,0), (-1,0,1,0), (0,-1,0,0) }, and the whole lattice. Their volumes are 1, 1, Sqrt(3), and 3.
pkg directory in one of the GAP root directories. If you don't
have access to the pkg directory of the main
GAP installation, you can add private root directories
by running GAP with -l option. )
This will create the directory CFLat inside the pkg directory.LoadPackage("CFLat"); This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. http://www.gnu.org/licenses/.