PresentationSubgroupRrs( G, H )
PresentationSubgroupRrs( G, H, string ) 
PresentationSubgroupRrs( G, cosettable ) 
PresentationSubgroupRrs( G, cosettable, string )
PresentationSubgroupRrs    returns   a    presentation   record    (see
Presentation Records) containing a presentation for the subgroup H of
the    finitely   presented   group   G.    It   uses    the    Reduced
Reidemeister-Schreier method to construct this presentation.
As second argument, you may provide either the subgroup H itself or its coset table in G.
The   generators  in  the  resulting  presentation  will   be   named  by
string1, string2, ..., the default string is "_x".
The Reduced Reidemeister-Schreier algorithm is a modification of the Reidemeister-Schreier algorithm of George Havas Hav74b. It was proposed by Joachim Neubaccent127user and first implemented in 1986 by Andrea Lucchini and Volkmar Felsch in the SPAS system Spa89. Like George Havas' Reidemeister-Schreier algorithm, it needs only the presentation of G and a coset table of H in G to construct a presentation of H.
Whenever you call  the PresentationSubgroupRrs command, it checks first
whether a  coset table  of H in G has already been computed and saved
in the subgroup  record of H by a  preceding call  of some  appropriate
command like CosetTableFpGroup  (see CosetTableFpGroup), Index (see
Index), or LowIndexSubgroupsFpGroup (see LowIndexSubgroupsFpGroup).
Only  if the  coset table is not yet available, it  is now constructed by
PresentationSubgroupRrs  which   calls  CosetTableFpGroup  for   this
purpose.  In  this  case,  of  course, a set  of  generators  of  H  is
required, but they will not be used any more in the subsequent steps.
Next, a set of generators of H is determined by reconstructing the coset table and introducing in that process as many Schreier generators of H in G as are needed to do a Felsch strategy coset enumeration without any coincidences. (In general, though containing redundant generators, this set will be much smaller than the set of all Schreier generators. That's why we call the method the Reduced Reidemeister-Schreier.)
After having constructed this set of primary subgroup generators , say, the coset table is extended to an augmented coset table which describes the action of the group generators on coset representatives, i.e., on elements instead of cosets. For this purpose, suitable words in the (primary) subgroup generators have to be associated to the coset table entries. In order to keep the lengths of these words short, additional secondary subgroup generators are introduced as abbreviations of subwords. Their number may be large.
Finally, a  Reidemeister  rewriting  process  is  used  to  get  defining
relators for H from the relators of G.  As the resulting presentation
of  H  is  a  presentation on  primary and  secondary generators,  in
general   you  will   have   to   simplify   it   by  appropriate  Tietze
transformations  (see  Tietze  Transformations) or  by the DecodeTree
command  (see  DecodeTree) before  you can use  it.   Therefore  it  is
returned in the form of a presentation record, P say.
Compared  with  the  Modified  Todd-Coxeter method described  below,  the
Reduced Rei-de-mei-ster-Schreier method (as well as Havas' original
Reidemeister-Schreier program) has the advantage that it does not require
generators of H  to be given if  a coset table of H in  G is known.
This  provides  a  possibility to compute  a  presentation  of the normal
closure  of a  given  subgroup  (see  the  PresentationNormalClosureRrs
command below).
As you may be interested not only  to get the resulting presentation, but
also to know  what  the involved subgroup  generators  are,  the function
PresentationSubgroupRrs   will   also return  a   list   of the primary
generators of H as words in  the generators of G.   It is provided in
form   of an   additional  component  P.primaryGeneratorWords  of the
resulting presentation record P.
Note however: As stated in the description of the function Save (see
Presentation Records), the  function  Read cannot properly  recover a
component  involving  abstract  generators   different  from the  current
generators when it reads a presentation which has  been written to a file
by  the function  Save. Therefore the   function Save will ignore the
component  P.primaryGeneratorWords  if  you  call it    to  write the
presentation P to a file. Hence this component will be lost if you read
the presentation  back from that file,  and it will be  left to  your own
responsibility to remember what the primary generators have been.
A few examples are given in section Tietze Transformations.
PresentationSubgroupMtc( G, H )
PresentationSubgroupMtc( G, H, string ) 
PresentationSubgroupMtc( G, H, printlevel ) 
PresentationSubgroupMtc( G, H, string, printlevel )
PresentationSubgroupMtc    returns    a   presentation   record    (see
Presentation Records) containing a presentation for the subgroup H of
the  finitely  presented  group  G.  It  uses a  Modified  Todd-Coxeter
method to construct this presentation.
The  generators  in   the   resulting  presentation  will  be  named   by
string1, string2, ..., the default string is "_x".
The optional printlevel parameter can be used to restrict  or to extend
the amount of  output provided by the PresentationSubgroupMtc  command.
In particular, by specifying the printlevel parameter to be  0, you can
suppress the output of  the DecodeTree command which is called  by  the
PresentationSubgroupMtc  command (see  below).  The  default  value  of
printlevel is 1.
The so called Modified Todd-Coxeter method was proposed, in slightly different forms, by Nathan S.~Mendelsohn and William O.~J.~Moser in 1966. Moser's method was proved by Michael J.~Beetham and Colin M.~Campbell (see BC76). Another proof for a special version was given by D.~H.~McLain (see McL77). It was generalized to cover a broad spectrum of different versions (see the survey Neu82). Moser's method was implemented by Harvey A.~Campbell (see Cam71. Later, a Modified Todd-Coxeter program was implemented in St.~Andrews by David G.~Arrell, Sanjiv Manrai, and Michael F.~Worboys (see AMW82) and further developed by David G.~Arrel and Edmund F.~Robertson (see AR84) and by Volkmar Felsch in the SPAS system Spa89.
The  Modified Todd-Coxeter  method  performs  an enumeration  of  coset
representatives.   It  proceeds like an  ordinary  coset enumeration (see
CosetTableFpGroup CosetTableFpGroup), but as  the product of  a coset
representative by  a group  generator or its inverse need not be a  coset
representative itself, the Modified Todd-Coxeter has to store a  kind  of
correction element for each coset table entry.   Hence it builds  up a so
called augmented coset table of H  in G consisting  of the ordinary
coset table and a second  table in parallel which contains the associated
subgroup elements.
Theoretically, these subgroup elements could be expressed as words in the given generators of H, but in general these words tend to become unmanageable because of their enormous lengths. Therefore, a highly redundant list of subgroup generators is built up starting from the given (``primary'') generators of H and adding additional (``secondary'') generators which are defined as abbreviations of suitable words of length two in the preceding generators such that each of the subgroup elements in the augmented coset table can be expressed as a word of length at most one in the resulting (primary and secondary) subgroup generators.
Then a rewriting process (which is essentially a kind of Reidemeister rewriting process) is used to get relators for H from the defining relators of G.
The resulting presentation involves all the primary, but not all the secondary generators of H. In fact, it contains only those secondary generators which explicitly occur in the augmented coset table. If we extended this presentation by those secondary generators which are not yet contained in it as additional generators, and by the definitions of all secondary generators as additional relators, we would get a presentation of H, but, in general, we would end up with a large number of generators and relators.
On the other hand, if  we  avoid this extension, the current presentation
will not necessarily define H although  we have used the same rewriting
process  which  in  the  case of  the  SubgroupPresentationRrs  command
computes a defining set of relators for H from an augmented coset table
and defining relators  of G.  The different behaviour here is caused by
the fact that coincidences may have occurred in the Modified Todd-Coxeter
coset enumeration.
To  overcome  this problem  without  extending  the presentation  by  all
secondary generators, the  SubgroupPresentationMtc command  applies the
so called  tree decoding  algorithm  which provides  a  more economical
approach.   The reader is  strongly recommended to carefully read section
DecodeTree  where this algorithm is  described in more detail.  Here we
will  only  mention  that  this  procedure  adds  many  fewer  additional
generators  and relators  in a  process  which  in  fact  eliminates  all
secondary generators from  the presentation and hence finally  provides a
presentation  of  H  on  the  primary,  i.e.,  the   originally  given,
generators   of  H.   This   is   a   remarkable   advantage   of   the
SubgroupPresentationMtc       command       compared       to       the
SubgroupPresentationRrs  command.   But note that, for  some particular
subgroup H, the  Reduced Reidemeister-Schreier method might quite  well
produce a more concise presentation.
The resulting presentation is returned in the form of a presentation record, P say.
As the function PresentationSubgroupRrs desribed  above (see there  for
details), the function  PresentationSubgroupMtc returns  a list of  the
primary   subgroup generators    of    H   in form  of    a   component
P.primaryGeneratorWords. In fact, this list is not very exciting here
because it  is just a copy  of  the list H.generators, however  it is
needed to  guarantee a  certain  consistency between  the results  of the
different functions for computing subgroup presentations.
Though the tree decoding routine already involves a lot of Tietze transformations, we recommend that you try to further simplify the Tietze Transformations).
An example is given in section DecodeTree.
PresentationSubgroup( G, H )
PresentationSubgroup( G, H, string ) 
PresentationSubgroup( G, cosettable ) 
PresentationSubgroup( G, cosettable, string )
Presentation Records) containing a presentation for the subgroup H of the finitely presented group G.
As second argument, you may provide either the subgroup H itself or its coset table in G.
In  the case   of providing  the  subgroup  H  itself as  argument, the
current   GAP  implementation offers a  choice   between two different
methods for  constructing   subgroup presentations,  namely   the Reduced
Reidemeister-Schreier and  the Modified  Todd-Coxeter procedure.  You can
specify either of  them by calling the commands PresentationSubgroupRrs
or PresentationSubgroupMtc, respectively.  Further methods may be added
in a later GAP version.  If, in  some concrete application, you don't
care  for   the    method   to    be selected,     you    may use     the
PresentationSubgroup  command  as a kind  of default  command.   In the
present installation,   it  will call  the  Reduced Reidemeister-Schreier
method, i.e., it is identical with the PresentationSubgroupRrs command.
A few examples are given in section Tietze Transformations.
PresentationNormalClosureRrs( G, H )
PresentationNormalClosureRrs( G, H, string )
PresentationNormalClosureRrs returns   a  presentation record      (see
Presentation Records), P  say, containing   a  presentation for   the
normal closure of the  subgroup H of the  finitely presented group G.
It uses the  Reduced   Reidemeister-Schreier  method to  construct   this
presentation.  This provides a  possibility to compute a presentation for
a normal subgroup  for which only  ``normal subgroup generators'',  but
not necessarily a full set of generators are known.
The   generators  in   the  resulting   presentation  will  be  named  by
string1, string2, ..., the default string is "_x".
PresentationNormalClosureRrs  first  establishes an  intermediate group
record for the factor group of G by the normal closure N, say, of H
in G.  Then it performs a coset enumeration of  the trivial subgroup in
that factor group.  The resulting coset table  can be considered as coset
table  of  N in G, hence  a presentation for N can  be  constructed
using the  Reduced  Reidemeister-Schreier algorithm as  described for the
PresentationSubgroupRrs command.
As the  function PresentationSubgroupRrs desribed  above (see there for
details),  the function PresentationNormalClosureRrs  returns a list of
the  primary   subgroup  generators  of  N  in    form  of a  component
P.primaryGeneratorWords.
PresentationNormalClosure( G, H )
PresentationNormalClosure( G, H, string )
PresentationNormalClosure   returns    a   presentation   record   (see
Presentation Records) containing a presentation for the  normal closure
of the subgroup H of the finitely presented group G.  This provides a
possibility  to  compute  a presentation for a normal subgroup for  which
only ``normal  subgroup generators'', but not necessarily a full set of
generators are known.
If,  in  a  later  release,  GAP  offers  different  methods  for  the
construction      of     normal     closure      presentations,      then
PresentationNormalClosure will call one of these  procedures as a  kind
of    default    method.     At    present,    however,    the    Reduced
Reidemeister-Schreier  algorithm  is  the only  one implemented  so  far.
Therefore,  at   present   the  PresentationNormalClosure   command  is
identical  with  the   PresentationNormalClosureRrs  command  described
above.
GAP 3.4.4