Dear Forum, Dear German Combariza,
> On Jun 24, 2015, at 6/24/15 11:06, German Combariza <gcom...@hotmail.com> > wrote: > > Good day, > I am trying to do a semidirect product of groups in GAP without any luck. I > will appreciate if some body can show me a way to do it. > > The product is between the groups: > > G := CyclicGroup(4); > N := FreeAbelianGroup(6); > > Via the homomorphism: > > hom := GroupHomomorphismByImages(N, N, [N.1, N.2,N.3,N.4,N.5,N.6], [N.1^-1, > N.2^-1,N.4^-1,N.3,N.6^-1,N.5]); First, the syntax actually requires a homomorphism from G into the group containing hom: gap> gen:=SmallGeneratingSet(G)[1]; f1 gap> Order(gen); 4 gap> auhom:=GroupHomomorphismByImages(G,Group(hom),[gen],[hom]); [ f1 ] -> [ [ f1, f2, f3, f4, f5, f6 ] -> [ f1^-1, f2^-1, f4^-1, f3, f6^-1, f5 ] ] Then, GAP currently has no method for semidirect products with f.p. groups. The appended code provides such a method such that the standard call: gap> SemidirectProduct(G,auhom,N); <fp group on the generators [ F1, F2, f1, f2, f3, f4, f5, f6 ]> works. Regards, 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 ## code starts here SemidirectFp:=function( G, aut, N ) local Go,No,giso,niso,FG,GP,FN,NP,F,GI,NI,rels,i,j,P; Go:=G; No:=N; if not IsFpGroup(G) then giso:=IsomorphismFpGroup(G); else giso:=IdentityMapping(G); fi; if not IsFpGroup(N) then niso:=IsomorphismFpGroup(N); else niso:=IdentityMapping(N); fi; G:=Image(giso,G); N:=Image(niso,N); FG:=FreeGeneratorsOfFpGroup(G); GP:=List(GeneratorsOfGroup(G),x->PreImagesRepresentative(giso,x)); FN:=FreeGeneratorsOfFpGroup(N); NP:=List(GeneratorsOfGroup(N),x->PreImagesRepresentative(niso,x)); F:=FreeGroup(List(Concatenation(FG,FN),String)); GI:=GeneratorsOfGroup(F){[1..Length(FG)]}; NI:=GeneratorsOfGroup(F){[Length(FG)+1..Length(GeneratorsOfGroup(F))]}; rels:=[]; for i in RelatorsOfFpGroup(G) do Add(rels,MappedWord(i,FG,GI)); od; for i in RelatorsOfFpGroup(N) do Add(rels,MappedWord(i,FN,NI)); od; for i in [1..Length(FG)] do for j in [1..Length(FN)] do Add(rels,NI[j]^GI[i]/( MappedWord(UnderlyingElement(Image(niso,Image(Image(aut,GP[i]),NP[j]))),FN,NI) )); od; od; P:=F/rels; GI:=GeneratorsOfGroup(P){[1..Length(FG)]}; NI:=GeneratorsOfGroup(P){[Length(FG)+1..Length(GeneratorsOfGroup(P))]}; # set the embeddings and projections i:=rec(groups:=[Go,No], embeddings:=[GroupHomomorphismByImagesNC(Go,P,GP,GI), GroupHomomorphismByImagesNC(No,P,NP,NI)], projections:=GroupHomomorphismByImagesNC(P,Go, Concatenation(GI,NI), Concatenation(GP,List(NI,x->One(Go)))) ); SetSemidirectProductInfo(P,i); return P; end; InstallMethod( SemidirectProduct,"fp with group",true, [ IsSubgroupFpGroup, IsGroupHomomorphism, IsGroup ], 0, SemidirectFp); InstallMethod( SemidirectProduct,"group with fp",true, [ IsGroup, IsGroupHomomorphism, IsSubgroupFpGroup ], 0, SemidirectFp); ## code ends here _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum