diff --git a/lib/grppcext.gi b/lib/grppcext.gi index 39f164fb38..8b1028f0f7 100644 --- a/lib/grppcext.gi +++ b/lib/grppcext.gi @@ -517,7 +517,8 @@ IsCocycle := function( coc, cohom ) end; InstallGlobalFunction(EXPermutationActionPairs,function(D) -local ag, p1iso, agp, p2iso, DP, p1, p2, gens, genimgs, triso,s,i,u,opt; +local ag, p1iso, agp, p2iso, DP, p1, p2, gens, genimgs, triso,s,i,u,opt, + gp2,pc1,pc2; if HasDirectProductInfo(D) then ag:=DirectProductInfo(D).groups[1]; s:=Size(ag); @@ -530,55 +531,76 @@ local ag, p1iso, agp, p2iso, DP, p1, p2, gens, genimgs, triso,s,i,u,opt; IsGroupOfAutomorphismsFiniteGroup(ag); p1iso:=IsomorphismPermGroup(ag); agp:=Image(p1iso); - opt:=rec(limit:=s,random:=1); - if HasBaseOfGroup(agp) then - opt.knownBase:=BaseOfGroup(agp); - fi; - #p1iso:=p1iso*SmallerDegreePermutationRepresentation(agp); - EraseNaturalHomomorphismsPool(agp); - if s>1 then - repeat - u:=Group(()); - gens:=[]; - for i in GeneratorsOfGroup(agp) do - if Size(u)ImagesRepresentative(Embedding(D,1), - PreImagesRepresentative(p1iso,ImagesRepresentative(p1,i))) - *ImagesRepresentative(Embedding(D,2), - PreImagesRepresentative(p2iso,ImagesRepresentative(p2,i))) ); + genimgs:=List(gens, + i->ImagesRepresentative(Embedding(D,1), + PreImagesRepresentative(p1iso, + PreImagesRepresentative(pc1,ImagesRepresentative(p1,i)))) + *ImagesRepresentative(Embedding(D,2), + PreImagesRepresentative(p2iso, + PreImagesRepresentative(pc2,ImagesRepresentative(p2,i)))) ); + else + opt:=rec(limit:=s,random:=1); + if HasBaseOfGroup(agp) then + opt.knownBase:=BaseOfGroup(agp); + fi; + #p1iso:=p1iso*SmallerDegreePermutationRepresentation(agp); + EraseNaturalHomomorphismsPool(agp); + if s>1 then + repeat + u:=Group(()); + gens:=[]; + for i in GeneratorsOfGroup(agp) do + if Size(u)ImagesRepresentative(Embedding(D,1), + PreImagesRepresentative(p1iso,ImagesRepresentative(p1,i))) + *ImagesRepresentative(Embedding(D,2), + PreImagesRepresentative(p2iso,ImagesRepresentative(p2,i))) ); + + fi; triso:=GroupHomomorphismByImagesNC(DP,D,gens,genimgs); SetIsBijective(triso,true); - D:=DP; return rec(pairgens:=genimgs, permgens:=gens, isomorphism:=triso,