Dear GAP Forum,
Miha'ly Makai wrote
I'm using GAP 3.4.4. In GAP Manual Section 7.65 GroupId, several
predefined group names are given. Some of them (e.g. SL(d,q), GL(d,q) )
can be used to initialize a variable to the required group. Thus,G := SL(2,7);
is sensible butG := PSL(2,7);
is not. Where is a list of the group names which can be used to
initialize a variable? What to do if one needs an unavailable group?
> >From the strings in the `names' component of a record returned by
`GroupId', only those of the form `GL(d,q)' and `SL(d,q)' describe
a valid function call that allows one to create a group isomorphic
with the argument of `GroupId'.
For some other names, there are GAP functions to create a group
with this name, but the names of the GAP functions are usually
longer than the given names of the group.
For example, the functions `CyclicGroup', `DihedralGroup',
`SymmetricGroup', `AlternatingGroup' correspond to names of the
form `m', `Dm', `Sm', `Am'.
Direct products (name `KxH') can be formed with `DirectProduct',
groups with names corresponding to explicitly given presentations
(where the name is `D(p,q)', `G(p^2,q)' etc.) can be created as
finitely presented groups with this presentation.
For central, semidirect and subdiret products the name does in general
not identify the group up to isomorphism, so one has to be careful
with these names.
A group of the type `PSL(d,q)' can be constructed as a factor group
of `SL(d,q)' by its centre, for example via
`Operation( GL(d,q), NormedVectors( GF(q)^d ), OnLines )'.
If one deals with groups from the GAP libraries of groups up to
order 100 or of 2-groups up to order 256, there is a uniform way
to access these groups, without using names.
Namely, these groups can be identified up to isomorphism by the
components `catalogue' and `pGroupId', respectively,
of the record `id' returned by `GroupId'.
A `catalogue' component `[ n, k ]' means that an isomorphic group
can be constructed with `SolvableGroup( n, k )',
and if a component `pGroupId' is bound in `id' then an isomorphic
group can be created either with `TwoGroup( id.size, id.pGroupId )'
or with `ThreeGroup( id.size, id.pGroupId )', depending on whether
`id.size' is a power of 2 or 3.
I hope this is of some help.