[MathJax off]

### 1 Introduction

#### 1.1 General aims of **Congruence** package

The **GAP** package **Congruence** provides functions to construct several types of canonical congruence subgroups in \(SL_2(ℤ)\), and also intersections of a finite number of such subgroups.

Furthermore, it implements the algorithm for generating Farey symbols for congruence subgroups and using them to produce a system of independent generators for these subgroups.

Using the package, one can also determine indices of congruence subgroups and their intersections in \(SL_2(ℤ)\) and in other congruence subgroups, generate their random elements and check element memberships. Success of other group theoretical constructions mostly depends on whether they could be expressed in terms of group generators or not.

For the theoretical backround, we refer to [LLT95b], [LLT95a], [CLLT93] and [Kul91].

#### 1.2 Installation and system requirements

**Congruence** is distributed in standard formats (`tar.gz`

, `tar.bz2`

, `-win.zip`

) and can be obtained from http://www.cs.st-andrews.ac.uk/~alexk/congruence/.

**Congruence** does not use external binaries and, therefore, works without restrictions on the operating system. It requires at least version **GAP** 4.5, and no compatibility with previous releases of **GAP** 4 is guaranteed.

Installation of the package is standard and follows the guidelines from the **GAP** manual (see Reference: Installing a GAP Package. After the package is installed, you can start **GAP** and load the **Congruence** package using the command:

gap> LoadPackage("congruence");