GAP Lesson 5

Change to the directory where you store your GAP files, and then start up GAP.

gap> LogTo("GAPlesson5");
gap> At:=KnownAttributesOfObject;

More about groups given by presentations
References: ?Creating Presentations
Also: D.L. Johnson, Presentations of Groups, Cambridge U.P.
In the next example we study the group SL(2,Z) which is known to be isomorphic to the free product with amalgamation of a cycle of order 4 with a cycle of order 6, amalgamating the subgroups of order 2. In other words it has a presentation as follows.

gap> g:=FreeGroup(2,"g");
gap> g:=g/[g.1^6,g.2^4,g.1^3*g.2^2];
gap> AbelianInvariants(g);

GAP calls an integer matrix diagonalization program which computes Smith normal form to find AbelianInvariants, the elementary divisors of the quotient by the commutator subgroup. This will work even if the commutator quotient group is infinite. We could also have done the following:

gap> ga:=CommutatorFactorGroup(g);
gap> AbelianInvariants(ga);
gap> Size(ga);
gap> IsFpGroup(ga);
gap> IsFpGroup(g);

The point about many of the commands that follow is to show that it is not easy to work with groups given by presentations. Try this:

gap> DerivedSubgroup(g);

Although the commutator subgroup only has index 12, something seems to be rather difficult for the computer here. (Do you agree?) You might well wonder what the computer is trying to do anyway. We use a different approach, observing that the commutator subgroup is the smallest normal subgroup containing the commutators of the generators.

gap> sub:=Subgroup(g,[g.1*g.2*g.1^-1*g.2^-1]);
gap> NormalClosure(g,sub);

Something went wrong there as well. We try a new idea. Again, that point is to show that some things work and some things don't work.

gap> p:=PresentationNormalClosure(g,sub);
gap> Print(p);
gap> TzPrint(p);
gap> TzPrintRelators(p);
gap> AbelianInvariants(p);

Explain the relationship between the relators given by TZPrint and by TzPrintRelators.
GAP has algorithms to work with presentations, and algorithms to work with finitely presented groups given by generators and relators. To change between a group presentation and an fp group we use FpGroupPresentation and PresentationFpGroup.

gap> pg:=FpGroupPresentation(p);
gap> RelatorsOfFpGroup(pg);
gap> AbelianInvariants(pg);
gap> SimplifyPresentation(p);

At this stage GAP has shown by computation that our group has a free subgroup of rank 2 as a normal subgroup, with abelian quotient which is cyclic of order 12. We could try to do more computations. For example we know from theory that the center of this group has order 2. However, the command Center does not help us (try it!). Computing with groups given as presentations is not so easy!

Exercise: Find out what you can about the normal closure of the first generator
g.1 in g. For instance, what are its abelian invariants?

Here is another example of the kind of thing GAP can do:

gap> k:=GL(2,7);
gap> P := PresentationViaCosetTable( k );
gap> TzPrint(P);
gap> TzPrintRelators(P);
gap> SimplifyPresentation(P);
gap> Size(P);
gap> FpGroupPresentation( P );
gap> Size(last);

The command PresentationViaCosetTable does not return the homomorphism to the presentation. This command is useful if we wish to express an element of a group as a word in its generators. Instead we may use IsomorphismFpGroup or IsomorphismFpGroupByGenerators which are similar to IsomorphismPermGroup which we used in the last lesson. This would be useful for solving Rubik's cube.

gap> h:=Group((1,2,3,4,5),(1,2,3));
gap> presh:=IsomorphismFpGroup(h);
gap> Image(presh,(1,2)(3,4));
gap> At(presh);
gap> r:=Range(presh);
gap> At(r);
gap> RelatorsOfFpGroup(r);

How many relators did GAP use to get a presentation of h?
1. Express (3,4,5) as a word in the generators (1,2,3,4,5), (1,3,2,4,5) of h.
2. (Requiring some investigation) Express (3,4,5) as a word in the generators (1,2,3,4,5), (1,2,3) of h. The command
IsomorphismFpGroupByGenerators will be useful.

Investigate the groups
<a,b,c | a^2, b^2, c^2, (a*b)^3, (b*c)^4, (a*c)^2>
<a,b,c | a^2, b^2, c^2, (a*b)^3, (b*c)^5, (a*c)^2>
<a,b,c | a^2, b^2, c^2, (a*b)^3, (b*c)^3, (a*c)^2>