Database of Integral Maximal Finite Matrix Groups#
Magma includes a database of representatives of the \({\operatorname{GL}}(n, {\mathbb{Z}})\)-conjugacy classes of irreducible maximal finite subgroups of \({\operatorname{GL}}(n, {\mathbb{Z}})\) for \(n<=11\) and \(n \in \{13,17,19,23\}\). This section defines the interface to that database.
For \(n < 10\) the groups have been described in [Plesken and Pohst, 1977, Plesken and Pohst, 1980]. The groups of dimension \(10\) can be found in [Souvignier, 1994]. In the cases \(n>10\) prime, the representatives have been constructed using the descriptions given in [Plesken, 1985].
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.
- IntegralMatrixGroupDatabase() -> 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, SeqEnum#
Returns a lattice \(L\) and sequence of additional forms \(F\) fixed by the \(i\)-th group in the database \(D\).
- Construction(D, i): DB, RngIntElt -> MonStgElt, SeqEnum#
Returns a string \(S\) which describes the construction of the \(i\)-th group \(G\) in the database \(D\).
If the \(G\)-invariant lattice is well known, \(S\) equals the name of this lattice. If the Degree \(d\) of \(G\) is a prime, \(G\) usually can be chosen to fix the form \(a_0 I_d + a_1 (z+z^{-1}) + ... + a_k (z^k+z^{-1})\) with \(k = (d-1)/2\) and some \(a_i \in {\mathbb{Z}}\) where \(z\) denotes the permutation matrix of some \(d\)-cycle in \({\mathbb{Z}}^{d \times d}\) (see [Plesken, 1985]). In this case, \(S\) equals \([a_0, a_1, a_2, ...]\). In all other cases, \(S\) describes the isomorphism type of \(G\).
The second return value gives the numbers of all groups of degree \(d\) in the
Rational Matrix Group Databasewhich contain a \({\operatorname{GL}}(d, {\mathbb{Q}})\)-conjugate copy of \(G\).
- Group(D, d, i): DB, RngIntElt, RngIntElt -> GrpMat#
Returns the \(i\)-th entry of dimension \(d\) in the database \(D\) as a matrix group.
- Lattice(D, d, i): DB, RngIntElt, RngIntElt -> Lat, SeqEnum#
Returns a lattice \(L\) and sequence of additional forms \(F\) fixed by the \(i\)-th group of dimension \(d\) in the database \(D\).
- Construction(D, d, i): DB, RngIntElt, RngIntElt -> MonStgElt, SeqEnum#
Returns a string and integer which describe the construction of the \(i\)-th entry of dimension \(d\) in the database \(D\).
- Example: Integral (ex-2e0f58)#
> D:= IntegralMatrixGroupDatabase(); > #D; 222 > G:= Group(D, 8, 7); Construction(D, 8, 7); A8* [ 3 ]
So \(G\) is the automorphism group of the dual of the root lattice \(A_8\) and it is conjugate to a subgroup of the third entry of dimension \(8\) in the
RationalMatrixgroupDatabase. We find an explicit embedding \(T\) of \(G\) into that group.> DQ:= RationalMatrixGroupDatabase(); > H:= Group(DQ, 8, 3); L:= Lattice(DQ, 8, 3); > F:= PositiveDefiniteForm(G); > for s in Sublattices(G) do > B:= BasisMatrix(s); > FF:= B * F * Transpose(B); > ok, T:= IsIsometric(LatticeWithGram(FF div GCD(Eltseq(FF))), L); > if ok then break; end if; > end for; > assert ok; > T:= Matrix(Rationals(), T*B); > [Matrix(Integers(), T*Matrix(G.i)*T^-1) in H : i in [1..Ngens(G)]]; [ true, true ]