Closed ThomasBreuer closed 3 weeks ago
@ThomasBreuer Here is a nontrivial example of where SMALLGENERATINGSETGENERIC
does something useful for an infinite group (the example uses the RCWA package):
gap> a := ClassTransposition(0,2,1,2);;
gap> b := ClassTransposition(1,2,2,4);;
gap> c := ClassTransposition(1,4,2,6);;
gap> d := ClassTransposition(0,4,3,6);;
gap> e := ClassTransposition(1,4,7,12);;
gap> G := Group(a,b,c,d,e);
<(0(2),1(2)),(1(2),2(4)),(1(4),2(6)),(0(4),3(6)),(1(4),7(12))>
gap> SMALLGENERATINGSETGENERIC(G);
[ ( 0(2), 1(2) ), ( 1(2), 2(4) ), ( 0(4), 3(6) ) ]
gap> time;
316
gap> G = Group(SMALLGENERATINGSETGENERIC(G));
true
(The example is nontrivial insofar as the group G acts transitively on the set of nonnegative integers if and only if the Collatz conjecture holds.)
Thanks for the example.
Meanwhile I noticed that this issue is a duplicate of #5542.
Was resolved by PR #5795
The following happens in GAP 4.13 and in the current master branch.
The method used for this infinite group is
SMALLGENERATINGSETGENERIC
, which tries to omit generators from the stored list. For that,IsSubset
gets called, which does membership tests. And there is no suitable method for that.What would be a good strategy to decide whether calling
SmallGeneratingSet
with an infinite group will run into an error? For which (nontrivial) situations with infinite groups doesSMALLGENERATINGSETGENERIC
something useful?