Goto Chapter: Top 1 2 3 4 5 6 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

1 Introduction
 1.1 An illustrative example

1 Introduction

This manual describes the IdRel package for GAP 4.7 for computing the identities among relators of a group presentation using rewriting, logged rewriting, monoid polynomials, module polynomials and Y-sequences.

The theoretical background for these computations is contained in Brown and Huebschumann [BH82], Brown and Razak Salleh [BRS99] and is surveyed in the first author's thesis [Hey99].

IdRel is primarily designed for the computation of a minimal set of generators for the module of identities among relators. It also contains functions which compute logged rewrite systems for group presentations (and complete them where possible); functions for operations involving elements of monoid rings; and functions for operations with elements of right modules over monoid rings. The Y-sequences are used as a rewriting way of representing elements of a free crossed module (products of conjugates of group relators and inverse relators). The package is written entirely in GAP4, and requires no compilation.

The package is loaded into GAP with the LoadPackage command, and on-line help is available in the usual way.


gap> LoadPackage( "idrel" ); 
gap> ?idrel

A pdf version of the IdRel manual is available in the doc directory of the home directory of IdRel. The information parameter InfoIdRel has default value 0. When raised to a higher value, additional information is printed out. IdRel was originally developed in 1999 using GAP3, partially supported by a University of Wales Research Assistantship for the first author, Anne Heyworth.

If you use IdRel to solve a problem then please send a short email to the second author, to whom bug reports, suggestions and other comments should also be sent. You may reference the package by mentioning [HW03] and [Hey99].

The package may be obtained as a compressed tar file idrel-version.number.tar.gz by ftp from one of the following sites:

The package also has a GitHub repository at: https://github.com/gap-packages/idrel/.

1.1 An illustrative example

A typical input for IdRel is an fp-group presentation. This requires a free group F on a set of generators and a set of relators R (words in the free group). The module of identities among relators for this presentation has as its elements the Peiffer equivalence classes of all products of conjugates of relators which represent the identity in the free group.

In this package the identities among relators are represented by Y-sequences, which are lists [[r_1, u_1],...,[r_k,u_k]] where r_1,...,r_k are the group relators or their inverses, and u_1,...,u_k are words in the free group F. A Y-sequence is evaluated in F as the product (u_1^-1r_1u_1)...(u_k^-1r_ku_k) and is an identity Y-sequence if it evaluates to the identity in F. An identity Y-sequence represents an identity among the relators of the group presentation. The main function of the package is to produce a set of Y-sequences which generate the module of identites among relators, and further, that this set be minimal in the sense that every element in it is needed to generate the module.

Before starting on the main example, we consider a simpler example illustrating the use of IdRel. All the functions used are described in detail in this manual. We compute a reduced set of identities among relators for the presentation of the symmetric group s3 with generators a,b and relators [a^3 , b^2, (ab)^2]. In the listings below, s3_Ri is the i-th relator for s3, and f1,f2 are the generators a,b.


gap> F := FreeGroup( 2 );;
gap> a := F.l;; b:= F.2;;
gap> rels3 := [ a^3 , b^2, a*b*a*b];
[ f1^3, f2^2, (f1*f2)^2 ]
gap> s3 := F/rels3;
<fp group on the generators [ fl, f2 ]> 
gap> SetName( s3, "s3" ); 
gap> idrels3 := IdentitiesAmongRelators( s3 );;
gap> Display( idrels3 );
[ [ [ s3_R1^-1, <identity ...> ], [ s3_R1, f1^-1 ] ], 
  [ [ s3_R2^-1, <identity ...> ], [ s3_R2, f2 ] ], 
  [ [ s3_R3^-1, <identity ...> ], [ s3_R3, f1*f2 ] ], 
  [ [ s3_R3^-1, <identity ...> ], [ s3_R1, f1 ], [ s3_R3^-1, f1^2 ], 
      [ s3_R2, f1^-1*f2^-1*f1 ], [ s3_R1, f2^-1*f1 ], 
      [ s3_R3^-1, f1*f2^-1*f1 ], [ s3_R2, f1 ], [ s3_R2, <identity ...> ] ] ]

If we write ρ=a^3, σ=b^2, τ=(ab)^2 then the first identity becomes ρ^-1 ρ^a^-1}. Similarly, the second and third identities are the root identities σ^-1 σ^b and τ^-1 τ^ab. The fourth identity, which is not a root identity, is obtained by walking around the Schreier diagram of the presentation, a somewhat truncated triangular prism. Taking the appropriate conjugate of each face in turn, we get:

\tau^{-1}\ \rho^a\ (\tau^{-1})^{a^2}\ \sigma^{a^{-1}b^{-1}a} \ \rho^{b^{-1}a}\ (\tau^{-1})^{ab^{-1}a}\ \sigma^a\ \sigma\;.

In order to form the module of identities for s3 the identities are transformed into module polynomials. The first is y_1 = ρ(-1 + a^-1) or -y_1a = ρ(a-1). The second and third are y_2 = σ(b-1) and y_3 = τ(ab-1), while the fourth is ρ(a+ba) + σ(1+a+ab) - τ(1+a^-1+b). Note that, in the fourth polynomial, the conjugators are converted to their normal forms in s3, namely a^2=a^-1, a^-1b^-1a=ab, b^-1a=ba and ab^-1a=b. Generators for this module are returned by the operation IdentityYSequences.


gap> idyseq3 := IdentityYSequences( s3 );     
[ ( s3_Y1*( -s3_M1), s3_R1*( s3_M1 - <identity ...>) ), 
  ( s3_Y2*( <identity ...>), s3_R2*( s3_M2 - <identity ...>) ), 
  ( s3_Y3*( s3_M1), s3_R3*( s3_M2 - s3_M1) ), 
  ( s3_Y9*( -<identity ...>), s3_R1*( -s3_M2*s3_M1 - s3_M1) + s3_R2*( -s3_M1*s\
3_M2 - s3_M1 - <identity ...>) + s3_R3*( s3_M3 + s3_M2 + <identity ...>) ) ]

Further examples are given in chapter 6.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 Bib Ind

generated by GAPDoc2HTML