Cape Coast, Ghana - August 2003
WASS: Lecture 2.
Version 0.1, 21th August 2003
Among the basic types which gap can deal with are truth values,
gap> true and false;
They are important to check if something is true or not. For example.
The GAP system contains a huge library of finite groups
already built in.
GAP allows you to build a great number of groups with a single command.
We have seen one already, for making a free group with three generators.
Now we show how to build some Basic Groups. For a complete account
see the reference Manual, section 48
As we have already seen there may be different presentations of
the same group.
Symmetric and alternating groups
A group is simple if it has no nontrivial normal subgroups.
Exercise: prove that a4 has a unique maximal normal subgroup
isomorphic to Z2xZ2
(Hint: N:= MaximalNormalSubgroups(a4);)
If G and H are two groups
of elements in the same family, this
operation returns the group generated by all
commutators [ g, h ] =
g-1 h-1 g h
Is the commutator of G with itself It is normal in G and the
factor group G/Der(G) is the largest abelian factor group of G.
A group is perfect if it equals its derived subgroup
Exercise: Prove that a4 is the derived subgroup of s4.
a4 and A4 coincide
It is not possible to find an explicit isomorphism as above
since the generators are not "compatible";
NOTE: In general, to give a morphism of groups between two groups G and
is enough to assign to each generator in a generating system of G its
in G' PROVIDED THAT ALL RELATIONS WHICH HOLDS AMONG THE GENERATORS
TO HOLD THEIR ASSIGNED IMAGES
Note that the classes are in bijective correspondence with Ferrer
We want study the function which assign to each n the number of
of the symmetric group in n elements
gap> for n in [1..10] do
Study the dependence on n of the class with
the greatest number of elements
gap> for n in [1..10] do
In the next example we want to calculate a subgroup of
the alternating group over 8 elements, then its normalizer and finally
determine the structure of the extension.
As usual, GAP prints the group by giving all its generators.
This can be annoying, especially if there are many of them or if they
of huge degree. It also makes it difficult to recognize a
particular group when there already several around.
Note that although it is no problem for us to specify a particular
group to GAP, by using well-chosen identifiers such as a8 and elab,
it is impossible for GAP to use these identifiers when printing a group
us, because the group does not know which identifier(s) point to it,
in fact there can be several. In order to give a
name to the group itself (rather than to the identifier),
you have to use the function SetName. We do this with the name 2^3 here
which reflects the mathematical properties of the
group. From now on, GAP will use this name when printing the group for
but we still cannot use this name to specify the group to GAP,
because the name does not know to which group it
was assigned (after all, you could assign the same name to several
When talking to the computer, you must always use identifiers.
gap> SetName( elab, "2^3" ); elab;
The normalizer in a group of a given subgroup is the stabilizer of
that group under the conjugate action
i.e the set of elements in G such that Inverse(g)*H*g=H
gap> norm := Normalizer( a8, elab );; Size( norm );
Now that we have the subgroup norm of order 1344 and its subgroup elab,
we want to look at its factor (quotient) group, or better to the
short exact sequence
and in particular to the epimorphism hom and its image f
gap> hom := NaturalHomomorphismByNormalSubgroup( norm, elab );
gap> f := Image( hom );
gap> Size( f );
Note: the sequence means that the total space norm is fibred over
f and its fibres are cosets of elab.
The factor group is again represented as a permutation group.
However, the action domain of this factor group has nothing
to do with the action domain of norm. (It only happens that
both are subsets of the natural numbers.)
We can now form images and preimages under the natural homomorphism.
The set of preimages of an element under hom is a coset modulo
elab. We use the function PreImages here because hom is not a
so an element of the range can have several preimages or none at all.
gap> ker:= Kernel( hom );
gap> x := (1,8,3,5,7,6,2);; Image( hom, x );
gap> coset := PreImages( hom, last );
Note that GAP is free to choose any representative for the coset of
preimages. Of course the quotient of two representatives lies in the
gap> Elements(coset)/Elements(coset) in elab;
The factor group f is a simple group, i.e., it has no non-trivial
normal subgroups. GAP can detect this fact,
and it can then also find the name by which this simple group is known
(Such names are of course not available for non-simple groups.)
gap> IsSimple( f ); IsomorphismTypeInfoFiniteSimpleGroup( f );
gap> SetName( f, "L_3(2)" );
We give f the name L_3(2) because the last part of the name string
that it is isomorphic to the simple linear group L3(2).
This group, however, also has a lot of other names.
Names that are connected with a = sign are different names for the
same matrix group, e.g., A(2,2) is the Lie type notation for the
classical notation L(3,2). Other pairs of names are
connected via , these then specify other classical groups
that are isomorphic to that linear group
(e.g., the symplectic group S(2,7), whose Lie type notation would be
The group norm acts on the eight elements of its normal subgroup elab
by conjugation, yielding a representation of L3(2) in s8 which leaves
one point fixed (namely point 1). The image
of this representation can be computed with the function Action;
it is even contained in the group norm and we can show that norm is
a split extension of the elementary abelian
group 2^3 with this image of L3(2).
gap> op := Action( norm, elab );
gap> IsSubgroup( a8, op ); IsSubgroup( norm, op );
gap> IsTrivial( Intersection( elab, op ) );
gap> SetName( norm, "2^3:L_3(2)" );
1. Given a 2-cycle (a,b) and a 3-cycle (c,d,e) in S(5),
when is S5 generated by the two given cycle?
Same when the second cycle is a 4-cycle.
Same when the second cycle is a 5-cycle
2. Guess the cardinality of a minimal set of generators for Symmetric
Group over n elements