Dear Gap Forum,
Nathan Dunfield and I have been using GAP to try to search
through subgroups of finite index in fundamental groups of threemanifolds,
to test the conjecture that there are always subgroups of finite index
with epimorphisms to Z; we've been checking the Census of 10,000
3manifolds. GQuotients is usually effective for finding the
desired subgroups, but sporadically, it bombs, as illustrated in the
following session, (quoted from email from Nathan):

I've looked into it and it's really bizarre. Its
definately a bug of some sort. The problem is that it somehow manages
to create an immutable list where it usually creates a mutable one.
So if "reenter" the list in break mode and continue, the function
finishes fine. Further calls to GQuotients produce correct answers.
Look at this:

gap> F := FreeGroup(["a","b"]);; a := F.1;; b := F.2;;
gap> G := F/[ a^3*b^3*a^3*b^1*a^1*b^1*a^1*b^1, a*b^4*a^4*b^4*a*b*a*b ];;
gap> GQuotients(G, AlternatingGroup(5));
Lists Assignment: <list> must be a mutable list at
list[i] :=  list[i];
RelatorRepresentatives( grels ) called from
AugmentedCosetTableMtc( G, H, 1, "_x" ) called from
Size( FpGroupPresentation( p ) ) called from
ExcludedOrders( F, List( Fgens, function ( i )
 return e;
 end ) ) called from
<function>( <arguments> ) called from readevalloop
...
brk> list;
[1, 40]

# Let's confirm "list" is immutable;

brk> list[1] := 2;
Lists Assignment: <list> must be a mutable list
...
brk_02> quit;

# Now "fix" the problem, and the function finishes fine.

brk> list := [1,40];
[ 1, 40 ]
brk> return;
[ ]

# and now it works again.

gap> GQuotients(G, CyclicGroup(20));
[ [ a, b ] > [ f2*f3^2, f1 ] ]

There's nothing special about the choice of alternating group in the
first call to GQuotients, everything else I tried produced the same
result.
Thanks,
Bill Thurston wpt@math.ucdavis.edu