-subgroups: The function `SylowSubgroup' also requires two arguments, namely a group and a prime

, but the result is stored in the group --- namely together with the prime

in a list called `ComputedSylowSubgroups', but we
won't dwell on the details here.
\beginexample
gap> syl2 := SylowSubgroup( a8, 2 );; Size( syl2 );
64
gap> Normalizer( a8, syl2 ) = syl2;
true
gap> cent := Centralizer( a8, Centre( syl2 ) );; Size( cent );
192
gap> DerivedSeries( cent );; List( last, Size );
[ 192, 96, 32, 2, 1 ]
\endexample
We have typed double semicolons after some commands to avoid the output
of the groups (which would be printed by their generator lists).
Nevertheless, the beginner is encouraged to type a single semicolon
instead and study the full output. This remark also applies for the rest
of this tutorial.
With the next examples, we want to calculate a subgroup of `a8', then
its normalizer and finally determine the structure of the extension. We
begin by forming a subgroup generated by three commuting involutions,
i.e., a subgroup isomorphic to the additive group of the vector space
$2^3$.
\beginexample
gap> elab := Group( (1,2)(3,4)(5,6)(7,8), (1,3)(2,4)(5,7)(6,8),
> (1,5)(2,6)(3,7)(4,8) );;
gap> Size( elab );
8
gap> IsElementaryAbelian( elab );
true
\endexample
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 are 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 for 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 us,
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 groups). When talking to the
computer, you must always use identifiers.
\beginexample
gap> SetName( elab, "2^3" ); elab;
2^3
gap> norm := Normalizer( a8, elab );; Size( norm );
1344
\endexample
\index{homomorphism!natural}
Now that we have the subgroup `norm' of order 1344 and its subgroup
`elab', we want to look at its factor group. But since we also want to
find preimages of factor group elements in `norm', we really want to look
at the *natural homomorphism* defined on `norm' with kernel `elab' and
whose image is the factor group.
\beginexample
gap> hom := NaturalHomomorphismByNormalSubgroup( norm, elab );
__, ,
% say, equals the number of $(__

- ^