gap-packages / LINS

The GAP package LINS provides an algorithm for computing the normal subgroups of a finitely presented group up to some given index bound.
https://gap-packages.github.io/LINS/
Other
9 stars 3 forks source link

Error with `LowIndexNormalSubs` : Large Indexes #66

Open guillde opened 2 months ago

guillde commented 2 months ago

For sufficiently large indexes, LowIndexNormalSubs will throw the error below. If I run, for example:

f := FreeGroup("a", "b", "c");;
a:= f.1;; b := f.2;; c := f.3;;
g := f / [a^2, b^2, c^2, (a*b)^(4), (b*c)^(4), (c*a)^(4)]; 

l := LowIndexNormalSubs(g,10000); 

I get the following error:

Error, List Elements: <list>[1025] must have an assigned value in
qs!.images{generators} := gens{[ 1 .. d ]}; at /.../lib/pquot.gi:1352 called from
AbelianPQuotient( qs ); at  /.../lib/pquot.gi:1463 called from
PQuotient( IH, p, 1, LINS_MaxPGenerators ) at /.../LINS/gap/findPQuotients.gi:275 called from
LINS_FindPModules( gr, rK, p, opts ); at /.../LINS/gap/findPQuotients.gi:354 called from
LINS_FindPModules( gr, rK, p, opts ); at  /.../LINS/gap/findPQuotients.gi:354 called from
LINS_FindPModules( gr, rK, p, opts ); at /.../LINS/gap/findPQuotients.gi:354 called from
...  at test.g:7
type 'quit;' to quit to outer loop

I have tried this for some Coexter groups. This is for LINS 0.9.

FriedrichRober commented 1 month ago

Thanks for the bug report. The error seems to result from the internal parameter LINS_MaxPGenerators being too low for your specific example. I think setting this parameter to the index that you search for should fix the error.

As a quick dirty fix, I hope the following will work:

MakeReadWriteGlobal("LINS_MaxPGenerators");
LINS_MaxPGenerators := 10000;;
l := LowIndexNormalSubs(g,10000); 

It will take a few days until I have time to make a proper fix.