[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Database of Groups of Order up to 100

Database of Groups of Order up to 100

The gps100 database contains all groups of order up to 100, excluding Abelian groups, groups of order 64 (see Database of Groups of Order Dividing 256 for these) and the alternating group on five letters.

The groups are stored internally in a compact representation, so a little setting up must be done to generate a complete polycyclic group. The order of each group is known in advance, however, so several functions are provided to make use of this piece of knowledge.

The groups are accessed through the following functions only.

GroupOfOrder(o, n)
This function returns the n-th group of order o. In some cases, an informative message about the group may also be printed.
GroupsOfOrderCount(o)
This function returns the number of groups of order o which are stored in the database.
GroupSatisfying(f)
Given a boolean valued function f: GrpPC --> 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 compact presentation and applies the predicate f until it finds a suitable one. If no group is found, an error message is printed.
GroupOfOrderSatisfying(o, f)
As GroupSatisfying(f), except it only runs through the groups of order o.
GroupsSatisfying(f)
As GroupSatisfying(f), except a sequence of all such groups is returned.
GroupsOfOrderSatisfying(o, f)
As GroupOfOrderSatisfying(f), except a sequence of all such groups is returned.
GroupProcess()
Return a "process" for looping over all the stored groups. Initially it points to the first group (of order 6).
GroupOfOrderProcess(o)
Return a "process" for looping over all the stored groups of order o. Initially it points to the first group of order o.
GroupOfOrderProcess()
Return a "process" for looping over all the stored groups of order o where lo <= o <= hi. Initially it points to the first group of order greater than or equal to lo.
GroupProcessIsEmpty(P)
Return whether the process P currently points to a group.
GroupProcessExtractGroup(P)
Given a process P which currently points to a group, return that group.
GroupProcessNext(~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

A fairly typical use of a process to loop over groups 
would look something like this:

load gps100; P := GroupOfOrderProcess(<30, 40>); while not GroupProcessIsEmpty(P) do G := GroupProcessExtractGroup(P); ... do computations with G ... GroupProcessNext(~P); end while;

[Next] [Prev] [Right] [Left] [Up] [Index] [Root]