Magma includes a database containing most of the lattices explicitly presented in the Catalogue of Lattices maintained by Neil J.A. Sloane and Gabriele Nebe [NS01b].
Many standard lattices included in the Sloane & Nebe catalogue are not in the database as they may be obtained by applying Magma's standard lattice creation functions. Also omitted from the database are a small number of catalogued lattices defined over rings other than Z or Q.
The information available for any given lattice in the catalogue varies considerably. A similar variety is found in the Magma database version, although some data (generally either easily computable or rarely available in the catalogue) is omitted.
Where the Magma database does retain data, it is not altered from the data in the catalogue. Thus the caveat which comes with that catalogue remains relevant: "Warning! Not all the entries have been checked!"
The entries of the database can be accessed in three ways:
This function returns a database object which contains information about the database.
This section gives the functions that enable the user to find out what is in the database.
Returns the number of lattices stored in the database.
Returns the largest dimension of any lattice in the database.
Returns the number of lattices of dimension d stored in the database.
Returns the number of lattices named N stored in the database.
Return the name and dimension of the specified entry.
> D := LatticeDatabase(); > NumberOfLattices(D); 700The database contains 700 lattices. We get the set of all names in the database.
> names := {LatticeName(D,i): i in [1..#D]};
> #names;
673;
> Random(names);
S4(5):2
> NumberOfLattices(D, "S4(5):2");
1
There are 673 names, so 27 repeated names in the database, but only one
with name "S4(5):2".
The following functions retrieve lattice information from the database.
TrustAutomorphismGroup: Bool Default: trueReturns the specified entry from the database D as a lattice L.
If the TrustAutomorphismGroup parameter is assigned false, then any data which claims to be the automorphism group will not be stored in L.
Returns a record which contains all the information about the specified lattice stored in the database D. The automorphism group is returned separately from the lattice and not stored in it.
> D := LatticeDatabase(); > NumberOfLattices(D, 6); 19 > L := Lattice(D, 6, 10); > L; Standard Lattice of rank 6 and degree 6 Minimum: 4 Inner Product Matrix: [4 1 2 2 2 2] [1 4 2 2 2 2] [2 2 4 1 2 2] [2 2 1 4 2 2] [2 2 2 2 4 1] [2 2 2 2 1 4]There may be more information stored than just what is returned by the Lattice function. We get the record containing all the stored lattice data.
> R := LatticeData(D, 6, 10); > Format(R); recformat<name, dim, lattice, minimum, kissing_number, is_integral, is_even, is_unimodular, is_unimodular_hermitian, modularity, group_names, group, group_order, hermitian_group_names, hermitian_group, hermitian_group_order, hermitian_structure>This lists all possible fields in the record. They may or may not be assigned for any particular lattice.
> R`lattice eq L; true > R`name; A6,1 > assigned R`kissing_number; true > R`kissing_number; 42 > assigned R`group; false > A := AutomorphismGroup(L); > A : Minimal; MatrixGroup(6, Integer Ring) of order 96 = 2^5 * 3The result of the Lattice call is equal to the lattice field of the data record. The kissing number was stored, but the automorphism group wasn't. We computed the group (as a matrix group over the integers) and found it has order 96. [Next][Prev] [Right] [Left] [Up] [Index] [Root]