Dear Gary McConnell,

On Aug 22, 2012, at 12:14 PM, Gary McConnell <garymako...@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: hul...@math.colostate.edu, Phone: ++1-970-4914288
http://www.math.colostate.edu/~hulpke


_______________________________________________
Forum mailing list
Forum@mail.gap-system.org
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to