[GAP Forum] from StructureDescription to specific generators?

Alexander Hulpke hulpke at me.com
Sat Sep 1 16:28:51 BST 2012


Dear Gary McConnell,

On Aug 22, 2012, at 12:14 PM, Gary McConnell <garymakonel at googlemail.com> wrote:

> is there an easy way to access the generators of the normal
> subgroup and the "action" homomorphism from Ck to the automorphism group of
> Cm x Cn, or some splitting homomorphism, or equivalent 

There is no built in function, but you can easily check for decompositions. Lets first try direct products. We need two normal subgroups that intersect trivially and generate the whole group. First get nontrivial normal subgroups. For convenience we sort by group order:




gap> g:=SmallGroup(48,9); 
<pc group of size 48 with 5 generators>
gap> n:=Filtered(NormalSubgroups(g),x->Size(x)>1 and Size(x)<Size(g));;
gap> Sort(n,function(a,b) return Size(a)<Size(b);end);

Now check pairs (Combinations counts x,y as y,x, so no duplicates) for direct product candidates.
Instead of generation it is cheaper to use orders.

gap> d:=Filtered(Combinations(n,2),x->Size(Intersection(x[1],x[2]))=1
> and Size(x[1])*Size(x[2])=Size(g));
[ [ Group([ f2 ]), Group([ f1, f3, f4, f5 ]) ], 
  [ Group([ f2 ]), Group([ f1*f2, f3, f4, f5 ]) ], 
  [ Group([ f1, f3, f4, f5 ]), Group([ f2*f4 ]) ], 
  [ Group([ f1*f2, f3, f4, f5 ]), Group([ f2*f4 ]) ] ]
gap> List(d,x->List(x,Size));            
[ [ 2, 24 ], [ 2, 24 ], [ 24, 2 ], [ 24, 2 ] ]

So here its always 2 x something. Lets just try the first and investigate the second factor.
gap> h:=d[1][2];
Group([ f1, f3, f4, f5 ])

gap> n:=Filtered(NormalSubgroups(h),x->Size(x)>1 and Size(x)<Size(h));
gap> Sort(n,function(a,b) return Size(a)<Size(b);end);
gap> d:=Filtered(Combinations(n,2),x->Size(Intersection(x[1],x[2]))=1
> and Size(x[1])*Size(x[2])=Size(h));
[  ]

So no direct product here. For semidirect products we test for complements. (This can be done if either N or G/N is solvable):
gap> c:=List(n,x->Complementclasses(h,x));
[ [  ], [ Group([ f1, f3, f4 ]) ], [  ], [  ], [  ] ]

So only the second normal subgroup has complements. (If there are several classes we can just pick one.)

gap> Size(n[2]);
3

clearly cyclic or order 3. This is the first factor Look at the complement:

gap> c:=c[2][1];
Group([ f1, f3, f4 ])
gap> Size(c);
8
gap> IsAbelian(c);
true
gap> AbelianInvariants(c);
[ 8 ]

So we have a C3 : C8. In this case there is only one nontrivial homomorphism, but for the sake of example lets build it:

gap> au:=AutomorphismGroup(n[2]);
<group with 1 generators>
gap> hom:=GroupHomomorphismByImages(c,au,GeneratorsOfGroup(c),
> List(GeneratorsOfGroup(c),       
> x->ConjugatorAutomorphism(n[2],x)));
[ f1, f3, f4 ] -> [ ^f1, ^<identity> of ..., ^<identity> of ... ]

So now we have all the constituents so we could build the group as product. First the semidirect bit:

gap> s:=SemidirectProduct(c,hom,n[2]);
<pc group of size 24 with 4 generators>

and now the direct product with C2:

gap> c2:=CyclicGroup(2);;
gap> a:=DirectProduct(s,c2);
<pc group of size 48 with 5 generators>

Lets check that they are indeed isomorphic:
gap> IsomorphismGroups(g,a);
[ f1, f2, f3, f4, f5 ] -> [ f1, f5, f2, f3, f4 ]


So everything went fine.

Hope this helps,

   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




More information about the Forum mailing list