diff --git a/lib/autsr.gi b/lib/autsr.gi index f233ac004f..0a09683580 100644 --- a/lib/autsr.gi +++ b/lib/autsr.gi @@ -1690,7 +1690,7 @@ end); # isomorphism available and there are many generators InstallGlobalFunction(PatheticIsomorphism,function(G,H) local d,a,map,cG,nG,nH,i,j,u,v,asAutomorphism,K,L,conj,e1,e2, - iso,api,gens,pre,aab,as; + iso,api,gens,pre,aab,as,somechar; asAutomorphism:=function(sub,hom) return Image(hom,sub); @@ -1784,11 +1784,16 @@ local d,a,map,cG,nG,nH,i,j,u,v,asAutomorphism,K,L,conj,e1,e2, aab:=[Image(e1,G),Image(e2,H)]; # we also fix the *pairs* of the characteristic subgroups as orbits. Again # this must happen in Aut(G)\wr 2, and reduces the size of the group. - a:=AutomorphismGroup(d:autactbase:=aab,someCharacteristics:= - rec(subgroups:=cG, - orbits:=List([1..Length(nG)],x->[Image(e1,nG[x]),Image(e2,nH[x])])), + somechar:=rec(subgroups:=cG, + orbits:=List([1..Length(nG)],x->[Image(e1,nG[x]),Image(e2,nH[x])])); + a:=AutomorphismGroup(d:autactbase:=aab,someCharacteristics:=somechar, directs:=aab, delaypermrep:=true ); + for i in cG do + if not ForAll(GeneratorsOfGroup(a),x->Image(x,i)=i) then + a:=Stabilizer(a,i,asAutomorphism); + fi; + od; iso:=fail; #if NrMovedPoints(api)>5000 then @@ -1815,6 +1820,7 @@ local d,a,map,cG,nG,nH,i,j,u,v,asAutomorphism,K,L,conj,e1,e2, as:=a; Add(cG,TrivialSubgroup(d)); + SortBy(cG,x->-Size(x)); for i in cG do u:=ClosureGroup(i,K); v:=ClosureGroup(i,L); @@ -1857,10 +1863,12 @@ local d,a,map,cG,nG,nH,i,j,u,v,asAutomorphism,K,L,conj,e1,e2, conj:=conj*map; K:=Image(map,K); - u:=Stabilizer(api,v,gens,pre,asAutomorphism); - Info(InfoMorph,1,"Factor ",Size(d)/Size(i),": ", - "reduce by ",Size(api)/Size(u)); - api:=u; + if Size(i)>1 then + u:=Stabilizer(api,v,gens,pre,asAutomorphism); + Info(InfoMorph,1,"Factor ",Size(d)/Size(i),": ", + "reduce by ",Size(api)/Size(u)); + api:=u; + fi; fi; fi; od; diff --git a/lib/morpheus.gi b/lib/morpheus.gi index 67f7d5ad8f..dd241b6a05 100644 --- a/lib/morpheus.gi +++ b/lib/morpheus.gi @@ -2860,7 +2860,8 @@ local m; fi; if Size(SolvableRadical(G))>1 and CanComputeFittingFree(G) - and not (IsSolvableGroup(G) and Size(G)<=2000) + and not (IsSolvableGroup(G) and Size(G)<=2000 + and ID_AVAILABLE(Size(G))<>fail) and (AbelianRank(G)>2 or Length(SmallGeneratingSet(G))>2 # the solvable radical method got better, so force if the radical of # the group is a good part diff --git a/tst/testextra/grpauto.tst b/tst/testextra/grpauto.tst index 77d60ef8bd..1c878b29fd 100644 --- a/tst/testextra/grpauto.tst +++ b/tst/testextra/grpauto.tst @@ -12,7 +12,7 @@ gap> SetAssertionLevel(0); # gap> G:=PcGroupCode(2664057732308087629446918084678644731357911420184737672, > 6272);; -gap> H:=PcGroupCode(849169324138369034371257796152864931485540637536648, +gap> H:=PcGroupCode(849169324138369034371257796152864931485540637536648, > 6272);; gap> IsomorphismGroups(G,H); fail @@ -88,7 +88,7 @@ gap> G:=Group((1,3,8,21,37,43,36,35)(2,6,15,30,41,29,19,4)(5,7,18,34,46, > (56,57),(1,2,5,12,26)(3,7,17,6,14)(4,10,25,35,42)(8,20,9,18,15) > (11,27,38,19,36)(13,29,28,43,32)(21,23,30,24,34)(33,37,41,46,39) > (49,50,52,51,53));; -gap> Size(AutomorphismGroup(G)); +gap> Size(AutomorphismGroup(G)); 2880000 # @@ -105,7 +105,7 @@ false # Isomorphism tests gap> gp1:=Group( -> (1,23,6,64,38)(2,42,18,19,11)(3,7,30,49,50)(4,14,20,45,46)(5,9,21,41,58,34, +> (1,23,6,64,38)(2,42,18,19,11)(3,7,30,49,50)(4,14,20,45,46)(5,9,21,41,58,34, > 17,29,48,44)(8,26,40,43,33)(10,22,59,60,32)(12,24,53,74,76)(13,31,55,81,77, > 61,25,52,75,83)(15,27,51,78,79)(16,28,47,68,71,62,36,56,70,69)(35,57,82,92, > 91,37,54,80,90,93)(66,72)(85,86)(88,94)(95,96)(97,98,100,102,104)(99,101, @@ -113,14 +113,14 @@ gap> gp1:=Group( > 27,14,24)(9,25,17,31)(16,35,62,37)(18,63,64,39)(20,46,26,43)(21,44,29, > 58)(22,60,30,50)(28,54,36,57)(40,67,45,65)(41,66,48,72)(47,69,56,71)(49,84, > 59,73)(51,79,53,76)(52,77,55,83)(68,85,70,86)(74,89,78,87)(75,88,81,94)(80, -> 91,82,93)(90,95,92,96)(97,98)(99,101)(102,104)(105,106), +> 91,82,93)(90,95,92,96)(97,98)(99,101)(102,104)(105,106), > (4,33)(8,14)(12,15)(16,62)(20,26)(24,27)(28,36)(35,37)(40,45)(43,46)(47, > 56)(51,53)(54,57)(65,67)(68,70)(69,71)(74,78)(76,79)(80,82)(85,86)(87, > 89)(90,92)(91,93)(95,96), (1,4)(2,8)(3,12)(5,16)(6,20)(7,24)(9,28)(10, > 27)(11,33)(13,35)(14,23)(15,32)(17,36)(18,40)(19,43)(21,47)(22,51)(25, > 54)(26,42)(29,56)(30,53)(31,57)(34,62)(37,61)(38,46)(39,65)(41,68)(44, > 69)(45,64)(48,70)(49,74)(50,76)(52,80)(55,82)(58,71)(59,78)(60,79)(63, -> 67)(66,85)(72,86)(73,87)(75,90)(77,91)(81,92)(83,93)(84,89)(88,95)(94,96), +> 67)(66,85)(72,86)(73,87)(75,90)(77,91)(81,92)(83,93)(84,89)(88,95)(94,96), > (1,5)(2,9)(3,13)(4,16)(6,21)(7,25)(8,28)(10,31)(11,34)(12,35)(14,36)(15, > 37)(17,23)(18,41)(19,44)(20,47)(22,52)(24,54)(26,56)(27,57)(29,42)(30, > 55)(32,61)(33,62)(38,58)(39,66)(40,68)(43,69)(45,70)(46,71)(48,64)(49, @@ -132,7 +132,7 @@ gap> gp2:=Group( > 83)(87,89)(88,94), (1,2,6,21,40,11,26,44,64,22)(3,10,34,61,53,36,7,25,52, > 62)(4,14,23,47,48)(5,9,24,43,60,20,18,32,50,46)(8,29,42,45,16)(12,27,56,74, > 76)(13,35,58,81,77,39,28,55,75,83)(15,30,54,78,79)(17,33,49,69,71)(19,31, -> 51,68,70)(37,57,82,90,92)(38,59,80,91,93)(41,63)(66,72)(73,84)(88,94), +> 51,68,70)(37,57,82,90,92)(38,59,80,91,93)(41,63)(66,72)(73,84)(88,94), > (1,4,11,16)(2,8,26,14)(3,12,36,15)(5,19,20,17)(6,23,44,29)(7,27,10,30)(9,33, > 18,31)(13,38,39,37)(21,42,64,47)(22,45,40,48)(24,51,32,49)(25,54,34,56)(28, > 59,35,57)(41,65,63,67)(43,69,50,68)(46,71,60,70)(52,74,61,78)(53,76,62, @@ -141,7 +141,7 @@ gap> gp2:=Group( > 33)(15,38)(16,19)(18,26)(21,43)(22,46)(23,49)(25,55)(27,57)(29,51)(30, > 59)(32,44)(34,58)(36,39)(40,60)(41,66)(42,68)(45,70)(47,69)(48,71)(50, > 64)(52,75)(53,77)(54,80)(56,82)(61,81)(62,83)(63,72)(65,85)(67,86)(73, -> 88)(74,90)(76,92)(78,91)(79,93)(84,94)(87,95)(89,96), +> 88)(74,90)(76,92)(78,91)(79,93)(84,94)(87,95)(89,96), > (1,36,11,3)(2,10,26,7)(4,15,16,12)(5,39,20,13)(6,40,44,22)(8,30,14,27)(9,35, > 18,28)(17,38,19,37)(21,63,64,41)(23,48,29,45)(24,60,32,46)(25,62,34,53)(31, > 59,33,57)(42,67,47,65)(43,72,50,66)(49,71,51,70)(52,84,61,73)(54,79,56, @@ -188,4 +188,10 @@ gap> gp2:=Group([(1,6,3)(2,5,4)(7,23,25)(8,24,26)(9,19,31) > 83,82,77)(73,99,91,81,89,79,93,98,95,78)(80,92)]);; gap> IsomorphismGroups(gp1,gp2)<>fail; true + +# MEssy p-groups, forum by D.Robinson, 4/5/23 +gap> g1:=Image(IsomorphismPcGroup(AutomorphismGroup(SmallGroup(64,112))));; +gap> g2:=SmallGroup(512,10493360);; +gap> IsomorphismGroups(g1,g2)<>fail; +true gap> STOP_TEST( "grpauto.tst", 1);