A finitely presented group (in short: FpGroup) is a group generated by a finite set of abstract generators subject to a finite set of relations that these generators satisfy. Every finite group can be represented as a finitely presented group.
Finitely presented groups are obtained by factoring a free group by a set of relators. Their elements know about this presentation and compare accordingly.
So to create a finitely presented group you first have to generate a free group (see FreeGroup for details). Then a list of relators is constructed as words in the generators of the free group and is factored out to obtain the finitely presented group. Its generators are the images of the free generators. So for example to create the group
< a,b | a^2 b^3 (a*b)^5 >you can use the following commands:
gap> f := FreeGroup( "a", "b" );; gap> g := f / [ f.1^2, f.2^3, (f.1*f.2)^5 ]; <fp group on the generators [ a, b ]>
Note that you cannot call the generators by their names. These names are not variables, but just display figures. So, if you want to access the generators by their names, you first have to introduce the respective variables and to assign the generators to them.
gap> GeneratorsOfGroup( g ); [ a, b ] gap> a; Variable: 'a' must have a value gap> a := g.1;; b := g.2;; # assign variables gap> GeneratorsOfGroup( g ); [ a, b ] gap> a in f; false gap> a in g; true
Note that the generators of the free group are different from the generators of the FpGroup (even though they are displayed by the same names). That means that words in the generators of the free group are not elements of the finitely presented group. Vice versa elements of the FpGroup are not words.
gap> a*b = b*a; false gap> (b^2*a*b)^2 = a^0; true
Such calculations comparing elements of an FpGroup may run into problems: There exist finitely presented groups for which no algorithm exists (it is known that no such algorithm can exist) that will tell for two arbitrary words in the generators whether the corresponding elements in the FpGroup are equal. Therefore the methods used by GAP to compute in finitely presented groups may run into warning errors, run out of memory or run forever. If the FpGroup is (by theory) known to be finite the algorithms are guaranteed to terminate (if there is sufficient memory available), but the time needed for the calculation cannot be bounded a priori. See Coset Tables and Coset Enumeration.
gap> (b^2*a*b)^2; b^2*a*b^3*a*b gap> a^0; <identity ...>
A consequence of our convention is that elements of finitely presented groups are not printed in a unique way.
IsSubgroupFpGroup( H ) C
returns true if H is a finitely presented group or a subgroup of a
finitely presented group.
IsFpGroup( G ) F
is a synonym for IsSubgroupFpGroup(G) and IsGroupOfFamily(G).
Free groups are a special case of finitely presented groups, namely finitely presented groups with no relators.
Another special case are groups given by polycyclic presentations. GAP uses a special representation for these groups which is created in a different way. See chapter Pc Groups for details.
InfoFpGroup V
The info class for functions dealing with finitely presented groups is
InfoFpGroup.
[Top] [Previous] [Up] [Next] [Index]
GAP 4 manual