PresentationFpGroup( G[, printlevel] ) F
creates a presentation, i.e. a Tietze object, for the given finitely presented group G. This presentation will be exactly as the presentation of G and no initial tietze transformations are applied to it.
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. 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.
gap> f := FreeGroup( "a", "b" ); <free group on the generators [ a, b ]> gap> g := f / [ f.1^3, f.2^2, (f.1*f.2)^3 ]; <fp group on the generators [ a, b ]> gap> p := PresentationFpGroup( g ); <presentation with 2 gens and 3 rels of total length 11>
Most of the functions creating presentations and all functions performing
Tietze transformations on them sort the relators by increasing lengths. The
function PresentationFpGroup is an exception because it is intended to
reflect the relators that were used to define the involved FpGroup. You may
use the following command to sort the presentation.
TzSort( P ) F
sorts the relators of the given presentation P by increasing lengths.
There is no particular ordering defined for the relators of equal
length. Note that TzSort does not return a new object. It changes the
given presentation.
GeneratorsOfPresentation( P ) O
returns a list of free generators that is a ShallowCopy of the current
generators of the presentation P.
FpGroupPresentation( P ) F
constructs an FpGroup group as defined by the given Tietze
presentation P.
gap> h := FpGroupPresentation( p ); <fp group on the generators [ a, b ]> gap> h = g; false
PresentationViaCosetTable( G ) F
PresentationViaCosetTable( G, F, words ) F
constructs a presentation for a given concrete finite group. It applies the relations finding algorithm which has been described in Can73 and Neu82.
If only a group G has been specified, the single stage algorithm is applied.
If the two stage algorithm is to be used, PresentationViaCosetTable
expects a subgroup H of G to be provided in form of two additional
arguments F and words, where F is a free group with the same number
of generators as G, and words is a list of words in the generators of
F which supply a list of generators of H if they are evaluated as
words in the corresponding generators of G.
gap> G := GeneralLinearGroup( 2, 7 ); GL(2,7) gap> GeneratorsOfGroup( G ); [ [ [ Z(7), 0*Z(7) ], [ 0*Z(7), Z(7)^0 ] ], [ [ Z(7)^3, Z(7)^0 ], [ Z(7)^3, 0*Z(7) ] ] ] gap> Size( G ); 2016 gap> P := PresentationViaCosetTable( G ); <presentation with 2 gens and 5 rels of total length 46> gap> TzPrintRelators( P ); #I 1. f2^3 #I 2. f1^6 #I 3. f1*f2*f1*f2*f1*f2*f1*f2*f1*f2*f1*f2 #I 4. f1*f2*f1^-1*f2*f1*f2^-1*f1^-1*f2*f1*f2*f1^-1*f2^-1 #I 5. f1^-3*f2*f1*f2*f1^-1*f2^-1*f1^-1*f2^-1*f1^-2*f2
The two stage algorithm saves an essential amount of space by constructing two coset tables of lengths |H| and |G|/|H| instead of just one coset table of length |G|. The next example shows an application of this option in the case of a subgroup of size 7920 and index 12 in a permutation group of size 95040.
gap> M12 := Group( [ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6), > (1,12)(2,11)(3,6)(4,8)(5,9)(7,10) ], () );; gap> F := FreeGroup( "a", "b", "c" ); <free group on the generators [ a, b, c ]> gap> words := [ F.1, F.2 ]; [ a, b ] gap> P := PresentationViaCosetTable( M12, F, words ); <presentation with 3 gens and 10 rels of total length 97> gap> G := FpGroupPresentation( P ); <fp group on the generators [ a, b, c ]> gap> RelatorsOfFpGroup( G ); [ c^2, b^4, a*c*a*c*a*c, a*b^-2*a*b^-2*a*b^-2, a^11, a^2*b*a^-2*b^-2*a*b^-1*a^2*b^-1, a*b*a^-1*b*a^-1*b^-1*a*b*a^-1*b*a^-1*b^-1, a^2*b*a^2*b^-2*a^-1*b*a^-1*b^-1*a^-1*b^-1, a^2*b^-1*a^-1*b^-1*a*c*b*c*a*b*a*b, a^4*b*a^2*b*a^-2*c*a*b*a^-1*c ]
Before it is returned, the resulting presentation is being simplified by
appropriate calls of the function SimplifyPresentation (see Tietze Transformations), but without allowing any eliminations of generators.
This restriction guarantees that we get a bijection between the list of
generators of G and the list of generators in the presentation. Hence,
if the generators of G are redundant and if you don't care for the
bijection, you may get a shorter presentation by calling the function
SimplifyPresentation, now without this restriction, once more yourself.
gap> H := Group( > [ (2,5,3), (2,7,5), (1,8,4), (1,8,6), (4,8,6), (3,5,7) ], () );; gap> P := PresentationViaCosetTable( H ); <presentation with 6 gens and 12 rels of total length 42> gap> SimplifyPresentation( P ); #I there are 4 generators and 10 relators of total length 36
If you apply the function FpGroupPresentation to the resulting
presentation you will get a finitely presented group isomorphic to G.
Note, however, that the function IsomorphismFpGroup (see
IsomorphismFpGroup) is recommended for this purpose.
GAP 4 manual