Database of Rational Maximal Finite Matrix Groups

Magma includes a database of rational maximal finite matrix groups and their invariant forms, for small dimensions (up to 31 at V2.8 and above). This section defines the interface to that database. See the articles of Nebe & Plesken [NP95] and Nebe [Neb96].

A particular entry of the database can be specified in one of two ways. Firstly, a number in the range 1 to the size of the database can be given. Alternatively, the desired dimension can be provided, together with a number in the range 1 to the number of entries of that dimension.

Each entry can be accessed either as a matrix group or as a lattice. If accessed as a matrix group, the order and base are set on return. If as a lattice, the automorphism group is set.

RationalMatrixGroupDatabase() : -> DB
This function returns a database object which contains information about the database.
LargestDimension(D) : DB -> RngIntElt
Returns the largest dimension of any entry stored in the database. It is an error to refer to larger dimensions in the database.
# D : DB -> RngIntElt
NumberOfGroups(D) : DB -> RngIntElt
NumberOfLattices(D) : DB -> RngIntElt
Returns the number of entries stored in the database.
NumberOfGroups(D, d) : DB, RngIntElt -> RngIntElt
NumberOfLattices(D, d) : DB, RngIntElt -> RngIntElt
Returns the number of entries stored in the database of dimension d.
Group(D, i): DB, RngIntElt -> GrpMat
Returns the i-th entry from the database D as a matrix group.
Lattice(D, i): DB, RngIntElt -> Lat
Returns the i-th entry from the database D as a lattice.
Group(D, d, i): DB, RngIntElt, RngIntElt -> GrpMat
Returns the i-th entry of dimension d from the database D as a matrix group.
Lattice(D, d, i): DB, RngIntElt, RngIntElt -> Lat
Returns the i-th entry of dimension d from the database D as a lattice.

Example GrpData_ratgps1 (H72E16)

> D := RationalMatrixGroupDatabase();
> #D;
354
> maxdim := LargestDimension(D);
> maxdim;
31
> &+[ NumberOfGroups(D, d) : d in [ 1 .. maxdim ] ];
354
These numbers agree (which is nice). The dimension in that range with the most curves is 24.
> S := [ NumberOfGroups(D, d) : d in [ 1 .. maxdim ] ];
> Max(S);
65 24
The groups have known order, so it is easy to find the group with smallest order and dimension 24.
> time orders := [#Group(D, 24, i): i in [1 .. NumberOfGroups(D, 24)]];
Time: 0.480
> Min(orders);
1872 53
V2.28, 13 July 2023