> < ^ Date: Mon, 07 Feb 2000 13:46:57 -0500 (EST)
> < ^ From: Alexander Hulpke <hulpke@math.colostate.edu >
< ^ Subject: Re: listing presentations

Dear GAP forum,

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:
http://www-gap.dcs.st-and.ac.uk/~gap/Forum/wpt@math.1/wpt@math.1/Re__gene.5/1.html
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.