In GAP, finitely presented groups are distinguished from group presentations which are GAP objects of their own and which are stored in presentation records. The reason is that very often presentations have to be changed (e.g. simplified) by Tietze transformations, but since in these new generators and relators are introduced, all words in the generators of a finitely presented group would also have to be changed if such a Tietze transformation were applied to the presentation of a finitely presented group. Therefore, in GAP the presentation defining a finitely presented group is never changed; changes are only allowed for group presentations which are not considered to define a particular group.
GAP offers a bundle of commands to perform Tietze transformations on Tietze Transformations). In order to speed up the respective routines, the relators in such a presentation record are not represented by ordinary (abstract) GAP words, but by lists of positive or negative generator numbers which we call Tietze words. indexTietze word
The term ``Tietze record'' will sometimes be used as an alias for ``presentation record''. It occurs, in particular, in certain error messages. indexTietze record
The following two commands can be used to create a presentation record from a finitely presented group or, vice versa, to create a finitely presented group from a presentation.
PresentationFpGroup( G )
PresentationFpGroup( G, printlevel )
PresentationFpGroup returns a presentation record containing a copy  of
the  presentation of the given finitely presented group  G on the  same
set of generators.
The optional printlevel parameter can be used to restrict or to extend the amount of output provided by Tietze transformation commands when being applied to the created presentation record. The default value 1 is designed for interactive use and implies explicit messages to be displayed by most of these commands. A printlevel value of 0 will suppress these messages, whereas a printlevel value of 2 will enforce some additional output.
FpGroupPresentation( P )
FpGroupPresentation returns a  finitely presented group defined  by the
presentation in the given presentation record P.
If some presentation record P, say, contains a large presentation, then
it  would  be nasty  to  wait for  the end of an  unintentionally started
printout of all of its components (or, more precisely, of  its  component
P.tietze which contains  the essential lists).   Therefore,  whenever
you use the standard print  facilities  to display a presentation record,
GAP  will  provide just  one line of text  containing  the  number  of
generators, the number of relators, and the total length of all relators.
Of course, you may use the RecFields and PrintRec commands to display
all components of P.
In addition, you may use the following commands to extract and print different amounts of information from a presentation record.
TzPrintStatus( P )
TzPrintStatus  prints the current  state of a presentation record  P,
i.e., the number of generators,  the  number of relators, and  the  total
length of all relators.
If  you are working  interactively,  you can get the same  information by
just typing P;
TzPrintGenerators( P )
TzPrintGenerators( P, list )
TzPrintGenerators   prints  the  current  list  of   generators  of   a
presentation record P, providing for each generator its name, the total
number of its  occurrences in the relators,  and,  if  that generator  is
known to be an involution, an appropriate message.
If a list list has been specified as second argument, then it is expected to be a list of the position numbers of the generators to be printed. list need not be sorted and may contain duplicate elements. The generators are printed in the order in which and as often as their numbers occur in list. Position numbers out of range (with respect to the list of generators) will be ignored.
TzPrintRelators( P )
TzPrintRelators( P, list )
TzPrintRelators prints the current list of relators  of  a presentation
record P.
If a list list has been specified as second argument, then it is expected to be a list of the position numbers of the relators to be printed. list need not be sorted and may contain duplicate elements. The relators are printed as Tietze words in the order in which (and as often as) their numbers occur in list. Position numbers out of range (with respect to the list of relators) will be ignored.
TzPrintPresentation( P )
TzPrintPresentation prints the current lists of generators and relators
and the current state of a presentation record P.  In fact, the command
    TzPrintPresentation( P ) 
is an abbreviation of the command sequence
    Print( "generators:\n" ); TzPrintGenerators( P );
    Print( "relators:\n" ); TzPrintRelators( P );
    TzPrintStatus( P ); 
TzPrint( P )
TzPrint( P, list )
TzPrint provides a  kind of  fast print out for a presentation record
P.
Remember that  in order to  speed up  the Tietze transformation routines,
each relator in a presentation record  P is internally represented by a
list of positive or negative generator  numbers, i.e., each factor of the
proper  GAP  word  is  represented  by  the  position  number  of  the
corresponding  generator with respect to the current list of  generators,
or by the respective negative  number, if  the factor is the inverse of a
generator which  is not known to be an involution.   In  contrast  to the
commands  TzPrintRelators  and  TzPrintPresentation  described above,
TzPrint does not  convert these lists back to the corresponding  GAP
words.
TzPrint prints the  current  list  of  generators,  and  then  for each
relator its length and its internal representation as a list  of positive
or negative generator numbers.
If a list list has been specified as second argument, then it is expected to be a list of the position numbers of the relators to be printed. list need not be sorted and may contain duplicate elements. The relators are printed in the order in which and as often as their numbers occur in list. Position numbers out of range (with respect to the list of relators) will be ignored.
There are four more print commands for presentation records which are convenient in the context of the interactive Tietze transformation commands:
TzPrintGeneratorImages( P )
TzPrintLengths( P )
TzPrintPairs( P ) 
TzPrintPairs( P, n )
TzPrintOptions( P )
Moreover, there are two functions which allow to convert abstract words to Tietze words or Tietze words to abstract words.
TietzeWordAbstractWord( word, generators )
Let generators be a list of abstract  generators and word an abstract
word in  these generators.  The function TietzeWordAbstractWord returns
the corresponding (reduced) Tietze word.
    gap> F := FreeGroup( "a", "b", "c" );
    Group( a, b, c )
    gap> tzword := TietzeWordAbstractWord(
    >  Comm(F.1,F.2) * (F.3^2 * F.2)^-1, F.generators );
    [ -1, -2, 1, -3, -3 ] 
AbstractWordTietzeWord( word, generators )
Let generators  be a list of  abstract  generators and  word a Tietze
word in these  generators.  The function AbstractWordTietzeWord returns
the corresponding abstract word.
    gap> AbstractWordTietzeWord( tzword, F.generators );
    a^-1*b^-1*a*c^-2 
Save( file, P, name )
The function Save allows to save a presentation and to  recover it in a
later GAP session.
Let P be a presentation, and let  file and name be strings denoting
a file  name  and a   variable name,  respectively.   The function Save
generates a new  file file and  writes P  and name to  that file in
such  a way that a  copy of P can be  reestablished by just reading the
file with  the function Read. This  copy of P  will be assigned  to a
variable called name.
Warning: It is  not guaranteed that   the functions Save and  Read
work properly if  the  presentation record P contains  additional, user
defined  components. For  instance, components  involving  abstract words
cannot be   read in again as soon   as the associated  generators are not
available any more.
Example.
    gap> F2 := FreeGroup( "a", "b" );;
    gap> G := F2 / [ F2.1^2, F2.2^7, Comm(F2.1,F2.1^F2.2),
    >                Comm(F2.1,F2.1^(F2.2^2))*(F2.1^F2.2)^-1 ];
    Group( a, b )
    gap> a := G.1;; b := G.2;;
    gap> P := PresentationFpGroup( G );
    << presentation with 2 gens and 4 rels of total length 30 >>
    gap> TzPrintGenerators( P );
    #I  1.  a   11 occurrences   involution
    #I  2.  b   19 occurrences
    gap> TzPrintRelators( P );
    #I  1. a^2
    #I  2. b^7
    #I  3. a*b^-1*a*b*a*b^-1*a*b
    #I  4. a*b^-2*a*b^2*a*b^-2*a*b*a*b
    gap> TzPrint( P );
    #I  generators: [ a, b ]
    #I  relators:
    #I  1.  2  [ 1, 1 ]
    #I  2.  7  [ 2, 2, 2, 2, 2, 2, 2 ]
    #I  3.  8  [ 1, -2, 1, 2, 1, -2, 1, 2 ]
    #I  4.  13  [ 1, -2, -2, 1, 2, 2, 1, -2, -2, 1, 2, 1, 2 ]
    gap> TzPrintStatus( P );
    #I  there are 2 generators and 4 relators of total length 30
    gap> Save( "checkpoint", P, "P0" );
    gap> Read( "checkpoint" );
    #I  presentation record P0 read from file
    gap> P0;
    << presentation with 2 gens and 4 rels of total length 30 >> 
GAP 3.4.4