Group Theoretic Functions

Contents

Generic Groups

Quite frequently in computational algebra one constructs a set of objects that generate a group under some operation. Generic groups are finite groups that are defined by generators that have implicit relations. In order to use them, one has to provide a function for the multiplication of two elements and one to check equality. If known, the identity object can also be passed in.

Generic groups are used in the class field package for the automorphism groups. A frequent situation is that one knows certain automorphisms (as maps) and would like to get the group generated by them. If the group is reasonably small, this can be done using the functions in this section.

All functions here rely on the group being small enough to allow complete enumeration of all elements.

The main application are situations where multiplication of the actual objects is time consuming so one would like to transfer as much as possible to some abstract finite group.

GenericGroup(X) : [] -> GrpFp, Map
    Mult: Intrinsic                     Default: '*'
    Eq: Intrinsic                       Default: 'eq'
    Id: Any                             Default: 
    SetVerbose("GrpGen", n):            Maximum: 3
Creates the group G generated by the elements of X. The function assumes that the group is finite. The second return value is a map from G onto a list of elements of G which are of the same type as the elements of X.

Since this function will enumerate all group elements, the group cannot be too large.

AddGenerator(G, x) : GrpFP, . -> BoolElt, GrpFP, Map
    SetVerbose("GrpGen", n):            Maximum: 3
Adds a new generator x to G. If x was already in G, the value false is returned and the other return values are unassigned. Otherwise, the new group and the corresponding map is returned.

G has to be a generic group as returned by GenericGroup.

The function applies a version of Dimino's algorithm [But91a] to find all elements of G with as few operations as possible.

FindGenerators(G) : GrpFP -> []
Given a generic group G as returned by GenericGroup, find a small set of generators.
V2.28, 13 July 2023