Skip to content

Commit

Permalink
ENHANCE: Better iso test for certain small groups
Browse files Browse the repository at this point in the history
If the ID does not work and thus cannot use small gropups functionality.
(These are basically orders multiple of 512). This should resolve
issues in a forum email of d robinson of 4/5/23
  • Loading branch information
hulpke authored and fingolfin committed May 3, 2023
1 parent 3be3a4c commit 58f31c6
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 16 deletions.
24 changes: 16 additions & 8 deletions lib/autsr.gi
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand All @@ -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);
Expand Down Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion lib/morpheus.gi
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 13 additions & 7 deletions tst/testextra/grpauto.tst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

#
Expand All @@ -105,22 +105,22 @@ 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,
> 103,105,106), (1,32,11,3)(2,10,23,7)(4,15,33,12)(5,13,34,61)(6,38,42,19)(8,
> 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,
Expand All @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -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);

0 comments on commit 58f31c6

Please sign in to comment.