> < ^ Date: Fri, 17 Oct 1997 13:01:41 +0100 (BST)
> < ^ From: Alexander Hulpke <hulpke@math.colostate.edu >
< ^ Subject: Re: Wreath vs Semidirect Product

Dear GAP-Forum,

Bruce Coletti asked:
> If S8 and S3 are respectively the symmetric groups on 8 and 3 letters, what
> values of f and Z would equate WreathProduct(S8,S3,IdentityMapping(S3)) to
> SemidirectProduct(DirectProduct(S8,S8,S8),f,Z), where f is a homomorphism
> from DirectProduct(S8,S8,S8) into Aut(Z)?

There has been some confusion recently in the Forum about semidirect
products, which I would like to clarify. The GAP syntax is:

S:=SemidirectProduct(G,hom,H);

S will be a group that contains a normal subgroup N isomorphic to H and a
complement U to N which is isomorphic to G. The homomorphism hom goes from G
to a group acting on H and will describe the conjugation action of U on N. I
append an example for constructing the mentioned wreath product as a
semidirect product. GAP currently does no complete test for the validity of
the arguments

I should add that 'SemidirectProduct' is mainly of educational value. There
are basically no special methods installed for groups constructed this way.
Most operations will fall back on generic routines that work with element
lists. I would not recommend to use these 'SemidirectProducts' for any
serious work, but rather suggest to construct such semidirect products
directly in a more suitable representation, for example as a subgroup of the
regular wreath product H\wr_{reg} G. (This embedding can be found for
example in Huppert: Endliche Gruppen, Theorem I.15.9. It is not difficult
conceptually, but to give explicit generators for an embedding requires care
and can be tedious.)

I hope this helps.

Best regards,

Alexander Hulpke

# Get S8 and S3
gap> S8:=SymmetricGroup(8);
Group( (1,8), (2,8), (3,8), (4,8), (5,8), (6,8), (7,8) )
gap> S3:=SymmetricGroup(3);
Group( (1,3), (2,3) )
# Form S8^3
gap> H:=DirectProduct(S8,S8,S8);
Group( (1,8), (2,8), (3,8), (4,8), (5,8), (6,8), (7,8), ( 9,16), (10,16), 
(11,16), (12,16), (13,16), (14,16), (15,16), (17,24), (18,24), (19,24), 
(20,24), (21,24), (22,24), (23,24) )
# To describe automorphisms of H, we need the generators of H
gap> hgens:=H.generators;
[ (1,8), (2,8), (3,8), (4,8), (5,8), (6,8), (7,8), ( 9,16), (10,16), (11,16), 
  (12,16), (13,16), (14,16), (15,16), (17,24), (18,24), (19,24), (20,24), 
  (21,24), (22,24), (23,24) ]
# corresponding (1,3): Exchange 1st and 3rd component
gap> hom1:=GroupHomomorphismByImages(H,H,hgens,hgens{Concatenation([15..21],[8..14],[1..7])});;
# corresponding (2,3): Exchange 2nd and 3rd component
gap> hom2:=GroupHomomorphismByImages(H,H,hgens,hgens{Concatenation([1..7],[15..21],[8..14])});;
# Usually in GAP3 it is good to tell GAP that these objects indeed respect
# relators (For example (1,3),(2,4) -> (1,2,3),(2,3,4) would not !)
# GAP otherwise will test this which sometimes may take very long.
gap> hom1.isMapping:=true;;
gap> hom2.isMapping:=true;;
# form a group acting on H
gap> aut:=Group(hom1,hom2);;
# now form the mapping from S3 into the automorphism group
gap> ahom:=GroupHomomorphismByImages(S3,aut,S3.generators,aut.generators);;
gap> ahom.isMapping:=true;;
# now we can build the semidirect product
gap> sdp:=SemidirectProduct(S3,ahom,H);;
# indeed the size is OK
gap> Size(sdp);
393289924608000
gap> Factorial(8)^3*6;
393289924608000
# Prove isomorphism to S8 \wr S3. (Note that finding the isomorphism by GAP
# is unfeasible in this situation.) We use implicitly information about
# which generators are chosen for the wreath product and construct the
# isomorphism by mapping generators.
w:=WreathProduct(S8,S3,IdentityMapping(S3));
Group( (1,8), (2,8), (3,8), (4,8), (5,8), (6,8), (7,8), ( 9,16), (10,16), 
(11,16), (12,16), (13,16), (14,16), (15,16), (17,24), (18,24), (19,24), 
(20,24), (21,24), (22,24), (23,24), ( 1,17)( 2,18)( 3,19)( 4,20)( 5,21)(6,22)
( 7,23)( 8,24), ( 9,17)(10,18)(11,19)(12,20)(13,21)(14,22)(15,23)(16,24) )
gap> iso:=GroupHomomorphismByImages(w,sdp,w.generators,sdp.generators{
  Concatenation([3..23],[1,2])});;                                             
# test that it is a homomorphism, (This takes some time!)
# thus by a size argument (note that the images of the generators of contain
# all generaors of sdp) both groups are isomorphic.
gap> IsHomomorphism(iso);
true;
# Further computations (for example for the Kernel of iso) are unfeasible
# again.

> < [top]