This is the manual for the **Semigroups** package for **GAP** version 3.1.0. **Semigroups** 3.1.0 is a distant descendant of the Monoid package for GAP 3 by Goetz Pfeiffer, Steve A. Linton, Edmund F. Robertson, and Nik Ruskuc.

**Semigroups** 3.1.0 contains efficient methods for creating semigroups, monoids, inverse semigroups and their ideals, calculating their Green's structure, size, elements, group of units, minimal ideal, and testing membership, finding the inverses of a regular element, and factorizing elements over the generators, and much more; see below for more details.

There are methods for finding: congruences of semigroups, the normalizer of a semigroup in a permutation group (using the method from [ABMN10]), the maximal subsemigroups of a finite semigroup (based on [GGR68] and described in [DMW16]), smaller degree partial permutation representations (based on [Sch92]) and the character table of an inverse semigroup. There are functions for producing pictures of the Green's structure of a semigroup (inspired by sgpviz), and for drawing graphical representations of the elements of certain semigroups.

Many standard examples of semigroups and classes of semigroups are provided; see Section 8. **Semigroups** also provides functions to read and write collections of elements of a semigroup to a file; see `ReadGenerators`

(20.1-1) and `WriteGenerators`

(20.1-2).

There are functions in **Semigroups** to define and manipulate free inverse semigroups and free bands; this part of the package was written by Julius JonuĊĦas; see Chapters 10.

From Version 3.0.0, **Semigroups** includes a copy of the libsemigroups C++ library which contains an implementation of the Froidure-Pin Algorithm.

**Minor note of caution**: **Semigroups** contains different methods for some **GAP** library functions, and so you might notice that **GAP** behaves differently when **Semigroups** is loaded. For more details about semigroups in **GAP** or Green's relations in particular, see Reference: Semigroups or Reference: Green's Relations.

If you find a bug or an issue with the package, then report this using the issue tracker.

This manual is organised as follows:

**Part I: generators**the different types of generators that are introduced in

**Semigroups**are described in Chapters 3, 4, and 5. These include`Bipartition`

(3.2-1),`PBR`

(4.2-1), and`Matrix`

(5.1-5), which supplement those already defined in the**GAP**library, such as`Transformation`

(Reference: Transformation for an image list) or`PartialPerm`

(Reference: PartialPerm for a domain and image).**Part II: semigroups and ideals**functions and operations for creating semigroups, monoids, and their ideals, in general, and various options, are described in Chapters 6 and 7.

**Part III: standard examples and constructions**standard examples of semigroups, such as

`FullBooleanMatMonoid`

(8.6-1) or`UniformBlockBijectionMonoid`

(8.3-8), are described in Chapter 8, and standard constructions, such as`TrivialSemigroup`

(9.1-1),`RightZeroSemigroup`

(9.1-5), are described in Chapter 9.**Part IV: further classes of semigroups and monoids**free objects in the categories of inverse semigroups, and bands, are described in Chapter 10, and graph inverse semigroups, which are a generalisation of polycyclic monoids, are described in Chapter 11.

**Part V: the structure of a semigroup or monoid**the functionality of the

**Semigroups**package for determining various structural properties of a given semigroup or monoid are described in Chapters 13, 14, and 15. Attributes and properties specific to inverse semigroups are described in Chapter 16.**Part VI: congruences, quotients, and homomorphisms**methods for creating and manipulating congruences and homomorphisms are described by Chapters 17 and 18.

**Part VII: utilities and helper functions**functions for reading and writing semigroups and their elements, and for visualising semigroups, and some of their elements, can be found in Chapters 19 and 20.

generated by GAPDoc2HTML