I'm a new user of GAP looking to use it to find finite-index, normal subgroups of some finitely presented groups. To provide a concrete example, how would I find all the low-index (say index<200) normal subgroups of G, where
F := FreeGroup("a","b");;
G := F / [ F.1^4, F.2^5, (F.1*F.2)^2 ];
In particular, G, like the other groups I'm interested in, is infinite, so I really need a solution that only finds normal subgroups with index less than a cutoff.
In principle, there is an algorithm here that does what I want. So the real question is just about doing so easily in GAP.
I implemented a GAP package that provides an algorithm for computing normal subgroups of a finitely presented group up to a given index bound. (This algorithm is based on the thesis of David Firth at Warwick, 2005, but nothing beyond the thesis has been published.)
The implemented algorithm is not based on CosetTable methods and hopefully runs reasonable fast in practice.
Note that the package is currently WIP. If you have any suggestions or something does not work as expected, feel free to open an Issue on GitHub. Any feedback is highly appreciated.
The package is available on GitHub here: https://github.com/FriedrichRober/LINS
The algorithm is called
LowIndexNormal.