36.5 Expressing Group Elements as Words in Generators

Using homomorphisms (see chapter Group Homomorphisms) is is possible to express group elements as words in given generators: Create a free group (see FreeGroup) on the correct number of generators and create a homomorphism from this free group onto the group G in whose generators you want to factorize. Then the preimage of an element of G is a word in the free generators, that will map on this element again. The following example shows how to decompose elements of S4 in the generators (1,2,3,4) and (1,2):

gap> g:=Group((1,2,3,4),(1,2));
Group( [ (1,2,3,4), (1,2) ] )
gap> f:=FreeGroup("x","y");
<free group on the generators [x,y]>
gap> hom:=GroupHomomorphismByImagesNC(f,g,GeneratorsOfGroup(f),               
> GeneratorsOfGroup(g));                                                   
[ x, y ] -> [ (1,2,3,4), (1,2) ]
gap> PreImagesRepresentative(hom,(2,3,4));
y^-1*x^-1*y^-1*x^-1

  • Factorization( G, elm ) F

    returns a factorization of elm as word in the generators of G given in the attribute GeneratorsOfGroup. (The corresponding free generators can be obtained via the family fam of the result as CollectionsFamily(fam)!.wholeGroup.)

    The algorithm used computes all elements of the group to ensure a short word is found. Therefore this function should not be used when the group G has more than a few thousand elements. Because of this you also should not call this function within algorithms, but use homomorphisms instead. The sole use of this function is didactic.

    gap> G:=SymmetricGroup( 6 );;
    gap> r:=(3,4); s:=(1,2,3,4,5,6);
    (3,4)
    (1,2,3,4,5,6)
    gap> H:= Subgroup(G, [ r, s ] ); # create a subgroup to force the system 
                                     # to use the generators r and s.
    Group([ (3,4), (1,2,3,4,5,6) ])
    gap> Factorization( H, (1,2,3) );
    x2*x1*x2*x1*x2^4
    gap> s*r*s*r*s^4;
    (1,2,3)
    

    [Top] [Previous] [Up] [Next] [Index]

    GAP 4 manual
    February 2000