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 **GAP**4, 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 **GAP**3, 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

**IdRel**GitHub site: https://github.com/gap-packages.github.io/idrel/.any

**GAP**archive, e.g. https://www.gap-system.org/Packages/packages.html;

The package also has a GitHub repository at: https://github.com/gap-packages/idrel/ where issues can be raised.

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],\ldots,[r_k,u_k]]\) where \(r_1,\ldots,r_k\) are the group relators or their inverses, and \(u_1,\ldots,u_k\) are words in the free group `F`

. A Y-sequence is evaluated in `F`

as the product \((u_1^{-1}r_1u_1)\ldots(u_k^{-1}r_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 = F/[f^3,g^2,(fg)^2]`

. In the listings below, `s3_Ri`

is the `i`

-th relator for `s3`

, and `f1,f2`

are the generators \(f,g\) of \(F\).

gap> F := FreeGroup( 2 );; gap> f := F.1;; g := F.2;; gap> rels3 := [ f^3, g^2, f*g*f*g ]; [ f1^3, f2^2, (f1*f2)^2 ] gap> s3 := F/rels3; <fp group on the generators [ f1, f2 ]> gap> SetName( s3, "s3" );; gap> IdentitiesAmongRelators( s3 ); [ [ [ -1, <identity ...> ], [ 1, s3_M1 ] ], [ [ -2, <identity ...> ], [ 2, s3_M2 ] ], [ [ -3, <identity ...> ], [ 3, s3_M1*s3_M2 ] ], [ [ 1, <identity ...> ], [ -3, s3_M1 ], [ 2, s3_M3*s3_M4 ], [ 1, s3_M4 ], [ -3, <identity ...> ], [ 2, s3_M3*s3_M4*s3_M3 ], [ 2, s3_M3 ], [ -3, s3_M3 ] ], [ [ 1, <identity ...> ], [ -3, s3_M2 ], [ 2, s3_M3*s3_M4*s3_M3*s3_M2 ], [ 2, s3_M3*s3_M2 ], [ 1, s3_M2 ], [ -3, <identity ...> ], [ 2, s3_M3 ], [ -3, s3_M3 ] ] ]

If we write \(\rho=f^3\), \(\sigma=g^2\), \(\tau=(fg)^2\) then the first identity becomes \(\rho^{-1} \rho^{f}\). Similarly, the second and third identities are the root identities \(\sigma^{-1} \sigma^{g}\) and \(\tau^{-1} \tau^{fg}\). 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:

\[ \rho\ (\tau^{-1})^f\ \sigma^{f^{-1}g^{-1}}\ \rho^{g^{-1}}\ (\tau^{-1})\ \sigma^{f^{-1}g^{-1}f^{-1}}\ \sigma^{f^{-1}}\ (\tau^{-1})^{f^{-1}}\, . \]

The fifth identity is equivalent to the fourth, as we shall show in section 6.2.

In order to form the *module of identities* for `s3`

the identities are transformed into module polynomials. The first is \(y_1 = \rho(f-1)\). The second and third are \(y_2 = \sigma(g-1)\) and \(y_3 = \tau(fg-1)\), while the fourth is \(\rho(1+g^{-1}f) + \sigma(1+f^{-1}g^{-1}+f^{-1}g^{-1}f) - \tau(1++f+f^2)\). Note that, in the fourth polynomial, the conjugators are converted to their normal forms in `s3`

, namely \(f^2=f^{-1},\ f^{-1}g^{-1}f=fg,\ g^{-1}f=gf\) and \(fg^{-1}f=g\). 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.

An extensive revision has been released with version 2.44. This has concentrated in the area of log sequences, adding many of the functions described in sections 6.2 and 6.3.

Work on revising Y-sequences is needed, but must wait for later versions.

generated by GAPDoc2HTML