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: Counting Rational Matrix Groups (ex-34d380)

Run in calculator (opens in a new tab)

> 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

Run in calculator (opens in a new tab)