Version 3.0.3

This project is maintained by J. D. Mitchell

GAP Package Semigroups

The Semigroups package is a GAP package containing methods for semigroups, monoids, and inverse semigroups. There are particularly efficient methods for semigroups or ideals consisting of transformations, partial permutations, bipartitions, partitioned binary relations, subsemigroups of regular Rees 0-matrix semigroups, and matrices of various semirings including boolean matrices, matrices over finite fields, and certain tropical matrices.

Semigroups contains efficient methods for creating semigroups, monoids, and inverse semigroup, calculating their Green's structure, ideals, size, elements, group of units, small generating sets, testing membership, finding the inverses of a regular element, factorizing elements over the generators, and so on. It is possible to test if a semigroup satisfies a particular property, such as if it is regular, simple, inverse, completely regular, and a variety of further properties.

There are methods for finding presentations for a semigroup, the congruences of a semigroup, the normalizer of a semigroup in a permutation group, the maximal subsemigroups of a finite semigroup, smaller degree partial permutation representations, and the character tables of inverse semigroups. There are functions for producing pictures of the Green's structure of a semigroup, and for drawing graphical representations of certain types of elements.

The current version of this package is version 3.0.3. For more information, please refer to the package manual. There is also a and a file.


This package requires GAP version >=4.9.0

The following other GAP packages are needed:

The following additional GAP packages are not required, but suggested:


J. D. Mitchell.


S. Burrell, M. Delgado, J. East, A. Egri-Nagy, N. Ham, J. Jonusas, M. Pfeiffer, C. Russell, B. Steinberg, J. Smith, M. Torpey, W. A. Wilson.


For bug reports, feature requests and suggestions, please use the issue tracker.

How to cite Semigroups

If you are using BibTeX, you can use the following BibTeX entry for the current version of Semigroups:

@manual{ Mitchell2017aa,
         Author = { Mitchell, J. D. and others },
         Month  = { Jun },
         Title  = { Semigroups - GAP package, Version 3.0.3 },
         Doi    = { 10.5281/zenodo.592893 },
         Url    = { },
         Year   = { 2017 }