|
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.
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.
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.
Given a generic group G as returned by GenericGroup, find a
small set of generators.
[Next][Prev] [Right] [Left] [Up] [Index] [Root]
|