# [GAP Forum] semidirect product

Alexander Hulpke hulpke at math.colostate.edu
Mon Feb 9 21:50:28 GMT 2004

```Dear Gap-Forum,

parth dixit wrote:

>    SemidirectProduct( G, alpha, N ) ;
> how could i get projection of semidirect product onto normal subgroup
> ( N ) on which other group( G ) is acting,manual says that we can get

The component projection onto N is not a homomorphism, and therefore not
provided (and never has been). You could obtain it by dividing off the image
under the projection on G, considering G as ekmbedded in the product. For
example:

For a semidirect product
gap> n:=Group((1,2),(3,4));
gap> a:=AutomorphismGroup(n);
gap> s:=SemidirectProduct(a,n);

gap> e1:=Embedding(s,1); # embedding of a into s
CompositionMapping( [ f1, f2 ] -> [ f1, f2 ], CompositionMapping( Pcgs(
[ (2,3), (1,2,3) ]) -> [ f1, f2 ], <action isomorphism> ) )
gap> e2:=Embedding(s,2); # embedding of n into s
[ (3,4), (1,2) ] -> [ f3, f4 ]
gap> p:=Projection(s); # projection onto a
Pcgs([ f1, f2, f3, f4 ]) -> [ [ (1,2), (3,4) ] -> [ (1,2)(3,4), (3,4) ],
[ (1,2), (3,4) ] -> [ (1,2)(3,4), (1,2) ],
IdentityMapping( Group([ (1,2), (3,4) ]) ),
IdentityMapping( Group([ (1,2), (3,4) ]) ) ]

the following small function now gives the canonical n-part of an arbitrary
element of s:

gap> npart:=function(elm)
>   return PreImagesRepresentative(e2,elm/Image(e1,Image(p,elm)));
> end;
function( elm ) ... end
gap> List(GeneratorsOfGroup(s),npart);
[ (), (), (3,4), (1,2) ]

> projection only onto group G,also is there way to decompose a group as
> semidirect product?
If you want to decompose a group as a semidirect product, calculate the
normal subgroups and check which ones have complements:

gap> g:=TransitiveGroup(12,200);

All nontrivial normal subgroups
gap> n:=Filtered(NormalSubgroups(g),i->Size(i)>1 and Size(i)<Size(g));
gap> com:=List(n,i->Complementclasses(g,i));

The index numbers of those which have complements.
gap> sel:=Filtered([1..Length(n)],i->Length(com[i])>0);
[ 1, 2, 4, 5, 6 ]

For example pick number 4:
gap> nt:=n[4];
Group([ (4,10)(6,12), (2,4,12)(6,8,10), (3,9)(4,10)(5,11)(6,12),
(1,3,11)(4,10)(5,7,9)(6,12), (1,3,7,9)(4,12,10,6),
(1,4,5,6,7,10,11,12)(2,3)(8,9) ])
gap> c:=com[4][1];
Group([ (2,8)(4,12)(6,10) ])

Action of c on n:
gap> acts:=List(GeneratorsOfGroup(c),
> i->ConjugatorAutomorphism(nt,i));
[ ^(2,8)(4,12)(6,10) ]

gap> alpha:=GroupHomomorphismByImages(c,Group(acts),
> GeneratorsOfGroup(c),acts);
[ (2,8)(4,12)(6,10) ] -> [ ^(2,8)(4,12)(6,10) ]

Now we can form a corresponding semidirect product
gap> s:=SemidirectProduct(c,alpha,nt);
<permutation group with 7 generators>

To get the correspondence, we map generators of nt and c separately:

gap> decom:=GroupHomomorphismByImages(g,s,
> Concatenation(GeneratorsOfGroup(nt),GeneratorsOfGroup(c)),
> Concatenation(List(GeneratorsOfGroup(nt),i->Image(Embedding(s,2),i)),
> List(GeneratorsOfGroup(c),i->Image(Embedding(s,1),i))));

I hope this is of help,

Alexander Hulpke

-- Colorado State University, Department of Mathematics,
Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA
email: hulpke at math.colostate.edu, Phone: ++1-970-4914288
http://www.math.colostate.edu/~hulpke

```