The following happens in GAP 4.16.0 and in the master branch.
gap> G:=function()
> local g1,g2,g3,g4,g5,g6,g7,r,f,g,rws,x;
> f:=FreeGroup(IsSyllableWordsFamily,7);
> g:=GeneratorsOfGroup(f);
> g1:=g[1];
> g2:=g[2];
> g3:=g[3];
> g4:=g[4];
> g5:=g[5];
> g6:=g[6];
> g7:=g[7];
> rws:=SingleCollector(f,[ 2, 3, 2, 2, 2, 23, 23 ]);
> r:=[
> [1,g5],
> [3,g5],
> [4,g5],
> ];
> for x in r do SetPower(rws,x[1],x[2]);od;
> r:=[
> [2,1,g2],
> [3,1,g4],
> [4,1,g5],
> [6,1,g6^13*g7^18],
> [7,1,g6^21*g7^8],
> [3,2,g3*g4*g5],
> [4,2,g3],
> [6,2,g6^21*g7^11],
> [7,2,g6^2*g7^22],
> [4,3,g5],
> [6,3,g6^6*g7^18],
> [7,3,g6^10*g7^15],
> [6,4,g6^10*g7^9],
> [7,4,g6^12*g7^11],
> [6,5,g6^21],
> [7,5,g7^21],
> ];
> for x in r do SetCommutator(rws,x[1],x[2],x[3]);od;
> return GroupByRwsNC(rws);
> end;;
gap> G:=G();;
gap> H:=function()
> local g1,g2,g3,g4,g5,g6,g7,r,f,g,rws,x;
> f:=FreeGroup(IsSyllableWordsFamily,7);
> g:=GeneratorsOfGroup(f);
> g1:=g[1];
> g2:=g[2];
> g3:=g[3];
> g4:=g[4];
> g5:=g[5];
> g6:=g[6];
> g7:=g[7];
> rws:=SingleCollector(f,[ 2, 3, 2, 2, 2, 23, 23 ]);
> r:=[
> [1,g5],
> [3,g5],
> [4,g5],
> ];
> for x in r do SetPower(rws,x[1],x[2]);od;
> r:=[
> [2,1,g2],
> [3,1,g4],
> [4,1,g5],
> [6,1,g6^8*g7^5],
> [7,1,g6^2*g7^13],
> [3,2,g3*g4*g5],
> [4,2,g3],
> [6,2,g6^21*g7^11],
> [7,2,g6^2*g7^22],
> [4,3,g5],
> [6,3,g6^6*g7^18],
> [7,3,g6^10*g7^15],
> [6,4,g6^10*g7^9],
> [7,4,g6^12*g7^11],
> [6,5,g6^21],
> [7,5,g7^21],
> ];
> for x in r do SetCommutator(rws,x[1],x[2],x[3]);od;
> return GroupByRwsNC(rws);
> end;;
gap> H:=H();;
gap> IsomorphismGroups( G, H );
GAP runs for some time, growing to about 10 GB within 10 minutes.
(According to an experiment which I made yesterday, the computation will run and grow further.)
Now the challenge is to find a condition that enables a good strategy for this example, without slowing down other examples.
The following happens in GAP 4.16.0 and in the master branch.
We define two solvable groups of order$23^2 \cdot 48$ and ask whether they are isomorphic.
GAP runs for some time, growing to about 10 GB within 10 minutes.
(According to an experiment which I made yesterday, the computation will run and grow further.)
Interrupting the computation shows that
IsomorphismGroupshas calledPatheticIsomorphism.Looking at the code of this function, we find that another strategy (
Morphium(G,H,false)) would have been chosen under different conditions, and that we can force this strategy by the global optionforcetest:= "old".For the given groups, this would help.
Now the challenge is to find a condition that enables a good strategy for this example, without slowing down other examples.