[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Database of Maximal Finite Subgroups of GL(n, Z)

Database of Maximal Finite Subgroups of GL(n, Z)

This database contains the maximal finite subgroups of GL(n, Z) for n = 2, 3, 4, 5. The groups are taken from the tables which appear in R. Buelow, "Ueber Dadegruppen in GL(5, Z)", Diss, RWTH Aachen 1973.

Each group is named according to the dimension of the matrices. For example, the label of the 3rd group of 4-dimensional matrices is 3, 4.

The following is a list of the groups:

Label		Name		Order
-----		----		-----

2, 1 CU2 8 = 2^3 2, 2 SX2 12 = 2^2 * 3

3, 1 CU3 48 = 2^4 * 3 3, 2 SX3 48 = 2^4 * 3 3, 3 PY3 48 = 2^4 * 3 3, 4 SX2 + CU1 24 = 2^3 * 3

4, 1 Q4 1152 = 2^7 * 3^2 4, 2 CU4 384 = 2^7 * 3 4, 3 SX2 + CU2 96 = 2^5 * 3 4, 4 SX3 + CU1 96 = 2^5 * 3 4, 5 SX4 240 = 2^4 * 3 * 5 4, 6 SX2(2) 288 = 2^5 * 3^2 4, 7 PY3 + CU1 96 = 2^5 * 3 4, 8 PY4 240 = 2^4 * 3 * 5 4, 9 SX2^2 144 = 2^4 * 3^2

5, 1 SX2(2) + CU1 576 = 2^6 * 3^2 5, 2 SX4 + CU1 480 = 2^5 * 3 * 5 5, 3 PY4 + CU1 480 = 2^5 * 3 * 5 5, 4 SX2^2 + CU1 288 = 2^5 * 3^2 5, 5 Q4 + CU1 2304 = 2^8 * 3^2 5, 6 SX3 + CU2 384 = 2^7 * 3 5, 7 PY3 + CU2 384 = 2^7 * 3 5, 8 SX2 + CU3 576 = 2^6 * 3^2 5, 9 SX3 + SX2 576 = 2^6 * 3^2 5, 10 PY3 + SX2 576 = 2^6 * 3^2 5, 11 CU5 3840 = 2^8 * 3 * 5 5, 12 SX5 1440 = 2^5 * 3^2 * 5 5, 13 PY5 1440 = 2^5 * 3^2 * 5 5, 14 1440 = 2^5 * 3^2 * 5 5, 15 3840 = 2^8 * 3 * 5 5, 16 1440 = 2^5 * 3^2 * 5

The groups are accessed through the following functions only.

GLZGroup(d, n)
This function returns the n-th group of degree d.
GLZInfo(d, n)
This function returns a string describing the structure of the n-th group of degree d.
GLZGroupOfDegreeCount(d)
This function returns the number of groups of degree d which are stored in the library.
GLZGroupSatisfying(f)
Given a boolean valued function f: GrpMat --> BoolElt (which may either be an intrinsic function or a user defined function), return a group satisfying f(G). This function runs through all the stored groups, expanding each from the stored generators and applies the predicate f until it finds a suitable one. If no group is found, an error message is printed.
GLZGroupOfDegreeSatisfying(d, f)
As GLZGroupSatisfying(f), except it only runs through the groups of degree d.
GLZGroupsSatisfying(f)
As GLZGroupSatisfying(f), except a sequence of all such groups is returned.
GLZGroupsOfDegreeSatisfying(d, f)
As GLZGroupOfDegreeSatisfying(d, f), except a sequence of all such groups is returned.
GLZProcess()
Return a "process" for looping over all the stored groups. Initially it points to the first group (of degree 2).
GLZProcessOfDegree(d)
Return a "process" for looping over all the stored groups of degree d. Initially it points to the first group of degree d.
GLZProcessOfDegree()
Return a "process" for looping over all the stored groups of degree d where lo <= d <= hi. Initially it points to the first group of degree greater than or equal to lo.
GLZProcessIsEmpty(P)
Return whether the process P currently points to a group.
GLZProcessGroup(P)
Given a process P which currently points to a group, return that group.
GLZProcessInfo(P)
Given a process P which currently points to a group, return the string describing the structure of the group.
GLZProcessLabel(P)
Given a process P which currently points to a group, return the degree d of the group and the number n such that the group is GLZGroup(d, n).
GLZProcessNext(~P)
Given a process P which currently points to a group, modify it so that it points to the next group if there is one or make it empty if there is not.

Example

load glnzgps;
P := GLZProcessOfDegree(5);
while not GLZProcessIsEmpty(P) do
    G := GLZProcessGroup(P);
    ... do computations with G ...
    GLZProcessNext(~P);
end while;
[Next] [Prev] [Right] [Left] [Up] [Index] [Root]