Dear GAP forum,
Keith Briggs asked:
Does anybody know an efficient method for listing all presentations
of a given group with a given number of generators?
Joachim Neub"user and Derek Holt already mentioned that this problem would
be fiendishly complicated, even for the trivial group. From a private
conversation however I realize that the question was slightly misformed and
actually asks for all *generating sets* with $n$ elements for a given group.
This task is doable, not just in theory but even in GAP.
The operation GQuotients(<G>,<H>) will return all epimorphisms of <G> onto
<H>, classified up to equivalence under Aut(H) (in other words: They are
considered equivalen if they have the same kernel).
If <G> is a free group with <n> generators, these epimorphisms correspond to
<n>-generator generating sets of <H> up to Aut(H):
gap> g:=Group((1,2,3),(1,2));; # for example S_3 gap> f:=FreeGroup(2);; gap> q:=GQuotients(f,g); [ [ f1, f2 ] -> [ (1,2,3), (2,3) ], [ f1, f2 ] -> [ (2,3), (1,2,3) ], [ f1, f2 ] -> [ (1,3), (2,3) ] ] # now map the generators of <f> to get the corresponding generating pairs # for <g>. gap> fgens:=GeneratorsOfGroup(f);; gap> List(q,i->Image(i,fgens)); [ [ (2,3), (1,2,3) ], [ (2,3), (1,2,3) ], [ (2,3), (1,3) ] ]
(Just last month Bill Thurston gave another example of using `GQuotients'
for a similar task, you can still find his mail in the forum archive:
which might be of interest as well.)
If you are interested in *counting* generating systems, there is a
special operation `EulerianFunction' which provides this functionality.
Again, the older forum thread mentioned above contains more references about
I hope this is of help,