The commands in this section can be used to modify a presentation by Tietze transformations.
In general, the aim of such modifications will be to simplify the given presentation, i.e., to reduce the number of generators and the number of relators without increasing too much the sum of all relator lengths which we will call the total length of the presentation. Depending on the concrete presentation under investigation one may end up with a nice, short presentation or with a very huge one.
Unfortunately there is no algorithm which could be applied to find the shortest presentation which can be obtained by Tietze transformations from a given one. Therefore, what GAP offers are some lower-level Tietze transformation commands and, in addition, some higher-level commands which apply the lower-level ones in a kind of default strategy which of course cannot be the optimal choice for all presentations.
The design of these commands follows closely the concept of the ANU Tietze transformation program Hav69 and its later revisions (see HKRR84, Rob88).
TzGo( P[, silent] ) F
automatically performs suitable Tietze transformations of the given presentation P. It is perhaps the most convenient one among the interactive Tietze transformation commands. It offers a kind of default strategy which, in general, saves you from explicitly calling the lower-level commands it involves.
If silent is specified as true, the printing of the status line
by TzGo is suppressed if the Tietze option printLevel (see Tietze Options) has a value less than 2.
SimplifyPresentation( P ) F
is a synonym for TzGo(P).
gap> F2 := FreeGroup( "a", "b" );; gap> G := F2 / [ F2.1^9, F2.2^2, (F2.1*F2.2)^4, (F2.1^2*F2.2)^3 ];; gap> a := G.1;; b := G.2;; gap> H := Subgroup( G, [ (a*b)^2, (a^-1*b)^2 ] );; gap> Index( G, H ); 408 gap> P := PresentationSubgroup( G, H ); <presentation with 8 gens and 36 rels of total length 111> gap> PrimaryGeneratorWords( P ); [ b, a*b*a ] gap> TzOptions( P ).protected := 2; 2 gap> TzOptions( P ).printLevel := 2; 2 gap> SimplifyPresentation( P ); #I eliminating _x7 = _x5^-1 #I eliminating _x5 = _x4 #I eliminating _x18 = _x3 #I eliminating _x8 = _x3 #I there are 4 generators and 8 relators of total length 21 #I there are 4 generators and 7 relators of total length 18 #I eliminating _x4 = _x3^-1*_x2^-1 #I eliminating _x3 = _x2*_x1^-1 #I there are 2 generators and 4 relators of total length 14 #I there are 2 generators and 4 relators of total length 13 #I there are 2 generators and 3 relators of total length 9 gap> TzPrintRelators( P ); #I 1. _x1^2 #I 2. _x2^3 #I 3. _x2*_x1*_x2*_x1
Roughly speaking, TzGo consists of a loop over a
procedure which involves two phases: In the search phase it calls
TzSearch and TzSearchEqual described below which try to reduce the
relator lengths by substituting common subwords of relators, in the
elimination phase it calls the command TzEliminate described below
(or, more precisely, a subroutine of TzEliminate in order to save some
administrative overhead) which tries to eliminate generators that can be
expressed as words in the remaining generators.
If TzGo succeeds in reducing the number of generators,
the number of relators, or the total length of all relators, it
displays the new status before returning (provided that you did not set
the print level to zero). However, it does not provide any output if all
these three values have remained unchanged, even if the command
TzSearchEqual involved has changed the presentation such that another
call of TzGo might provide further progress. Hence, in such a
case it makes sense to repeat the call of the command for several times
(or to call the command TzGoGo instead).
TzGoGo( P ) F
calls the command TzGo again and again until it does not reduce the
presentation any more.
The result of the Tietze transformations can be affected substantially by
the options parameters (see Tietze Options). To demonstrate the effect
of the eliminationsLimit parameter, we will give an example in which we
handle a subgroup of index 240 in a group of order 40320 given by a
presentation due to B. H. Neumann. First we construct a presentation of
the subgroup, and then we apply to it the command TzGoGo for different
values of the parameter eliminationsLimit
(including the default value 100). In fact, we also alter the
printLevel parameter, but this is only done in order to suppress most
of the output. In all cases the resulting presentations cannot be
improved any more by applying the command TzGoGo again, i.e., they are
the best results which we can get without substituting new generators.
gap> F3 := FreeGroup( "a", "b", "c" );;
gap> G := F3 / [ F3.1^3, F3.2^3, F3.3^3, (F3.1*F3.2)^5,
> (F3.1^-1*F3.2)^5, (F3.1*F3.3)^4, (F3.1*F3.3^-1)^4,
> F3.1*F3.2^-1*F3.1*F3.2*F3.3^-1*F3.1*F3.3*F3.1*F3.3^-1,
> (F3.2*F3.3)^3, (F3.2^-1*F3.3)^4 ];;
gap> a := G.1;; b := G.2;; c := G.3;;
gap> H := Subgroup( G, [ a, c ] );;
gap> for i in [ 28, 29, 30, 94, 100 ] do
> Pi := PresentationSubgroup( G, H );
> TzOptions( Pi ).eliminationsLimit := i;
> Print("#I eliminationsLimit set to ",i,"\n");
> TzOptions( Pi ).printLevel := 0;
> TzGoGo( Pi );
> TzPrintStatus( Pi );
> od;
#I eliminationsLimit set to 28
#I there are 2 generators and 95 relators of total length 10817
#I eliminationsLimit set to 29
#I there are 2 generators and 5 relators of total length 35
#I eliminationsLimit set to 30
#I there are 3 generators and 98 relators of total length 2928
#I eliminationsLimit set to 94
#I there are 4 generators and 78 relators of total length 1667
#I eliminationsLimit set to 100
#I there are 3 generators and 90 relators of total length 3289
Similarly, we demonstrate the influence of the saveLimit parameter by
just continuing the preceding example for some different values of the
saveLimit parameter (including its default value 10), but without
changing the eliminationsLimit parameter which keeps its default value
100.
gap> for i in [ 9, 10, 11, 12, 15 ] do > Pi := PresentationSubgroup( G, H ); > TzOptions( Pi ).saveLimit := i; > Print( "#I saveLimit set to ", i, "\n" ); > TzOptions( Pi ).printLevel := 0; > TzGoGo( Pi ); > TzPrintStatus( Pi ); > od; #I saveLimit set to 9 #I there are 3 generators and 97 relators of total length 5545 #I saveLimit set to 10 #I there are 3 generators and 90 relators of total length 3289 #I saveLimit set to 11 #I there are 3 generators and 103 relators of total length 3936 #I saveLimit set to 12 #I there are 2 generators and 4 relators of total length 21 #I saveLimit set to 15 #I there are 3 generators and 143 relators of total length 18326
[Top] [Previous] [Up] [Next] [Index]
GAP 4 manual