An important class of algorithms for finitely presented groups are the quotient algorithms which compute quotient groups of a given finitely presented group.
MaximalAbelianQuotient( fpgrp ) O
gap> f:=FreeGroup(2);;fp:=f/[f.1^6,f.2^6,(f.1*f.2)^12]; <fp group on the generators [ f1, f2 ]> gap> hom:=MaximalAbelianQuotient(fp); [ f1, f2 ] -> [ f1, f3 ] gap> Size(Image(hom)); 36
EpimorphismPGroup( fpgrp, p ) O
EpimorphismPGroup( fpgrp, p, cl ) O
computes an epimorphism from the finitely presented group fpgrp to the largest p-group of class cl which is a quotient of fpgrp. If cl is omitted, the largest finite p-group quotient is determined.
gap> hom:=EpimorphismPGroup(fp,2); [ f1, f2 ] -> [ a1, a2 ] gap> Size(Image(hom)); 8 gap> hom:=EpimorphismPGroup(fp,3,7); [ f1, f2 ] -> [ a1, a2 ] gap> Size(Image(hom)); 6561
EpimorphismNilpotentQuotient( fpgrp[, n] ) F
returns an epimorphism on the class n finite nilpotent quotient of the finitely presented group fpgrp. If n is omitted, the largest finite nilpotent quotient is taken.
gap> hom:=EpimorphismNilpotentQuotient(fp,7); [ f1, f2 ] -> [ f1*f4, f2*f5 ] gap> Size(Image(hom)); 52488
A related operation which is also applicable to finitely presented groups is
GQuotients, which computes all epimorphisms from a (finitely presented)
group F onto a given (finite) group G, see GQuotients.
gap> GQuotients(fp,Group((1,2,3),(1,2))); [ [ f1, f2 ] -> [ (1,2,3), (2,3) ],[ f1, f2 ] -> [ (2,3), (1,2,3) ], [ f1, f2 ] -> [ (1,3), (2,3) ] ]
GAP 4 manual