Libsemigroups is a C++ library for semigroups and monoids; it is partly based
on "Algorithms for computing finite semigroups", "Expository Slides", and
Semigroupe 2.01 by Jean-Eric Pin.
The libsemigroups library is used in the Semigroups package for GAP.
Some of the features of Semigroupe 2.01 are not yet implemented in
libsemigroups; this is a work in progress. Missing features include those
for:
- Green's relations, or classes
- finding a zero
- minimal ideal, principal left/right ideals, or indeed any ideals
- inverses
- local submonoids
- the kernel
- variety tests.
These will be included in a future version.
Libsemigroups performs roughly the same as Semigroupe 2.01 when there is a
known upper bound on the size of the semigroup being enumerated, and this is
used to initialize the data structures for the semigroup; see
libsemigroups::Semigroup::reserve for more details. Note that in Semigroupe
2.01 it is always necessary to provide such an upper bound, but in
libsemigroups it is not.
Libsemigroups also has some advantages over Semigroupe 2.01:
- there is a (hopefully) convenient C++ API, which makes it relatively easy to
create and manipulate semigroups and monoids
- there are some multithreaded methods for semigroups and their congruences
- you do not have to know/guess the size of a semigroup or monoid before you
begin
- libsemigroups supports more types of elements than Semigroupe 2.01
- it is relatively straightforward to add support for further types of
elements and semigroups
- it is possible to enumerate a certain number of elements of a semigroup or
monoid (say if you are looking for an element with a particular property),
to stop, and then to start the enumeration again at a later point
- you can instantiate as many semigroups and monoids as you can fit in memory
- it is possible to add more generators after a semigroup or monoid has been
constructed, without losing or having to recompute any information that was
previously known
- libsemigroups contains rudimentary implementations of the Todd-Coxeter and
Knuth-Bendix algorithms for finitely presented semigroups, which can also be
used to compute congruences of a (not necessarily finitely presented)
semigroup or monoid.
* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Tue Jul 14 2026 Jerry James <loganjerry@gmail.com> - 3.6.1-3
- Drop unused perl(open) BR
- Explicitly depend on autoconf & automake
* Thu Jun 25 2026 FrantiĊĦek Zatloukal <fzatlouk@redhat.com> - 3.6.1-2
- Rebuilt for fmt/spdlog
* Sun May 17 2026 Jerry James <loganjerry@gmail.com> - 3.6.1-1
- Version 3.6.1
* Sat May 16 2026 Jerry James <loganjerry@gmail.com> - 3.6.0-1
- Version 3.6.0
- Use the system catch package
* Wed Apr 08 2026 Jerry James <loganjerry@gmail.com> - 3.5.5-1
- Version 3.5.5
* Fri Mar 27 2026 Jerry James <loganjerry@gmail.com> - 3.5.4-1
- Version 3.5.4
* Tue Mar 17 2026 Jerry James <loganjerry@gmail.com> - 3.5.3-1
- Version 3.5.3
* Mon Mar 16 2026 Jerry James <loganjerry@gmail.com> - 3.5.2-1
- Version 3.5.2
- Drop all patches
- Add MIT to license due to rx-ranges and magic_enum
- Drop the doc subpackage due to unavailable dependencies
- Use HPCombi on aarch64
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jul 03 2025 Jerry James <loganjerry@gmail.com> - 2.7.4-1
- Version 2.7.4
- Drop upstreamed template-lookup patch
* Fri Jan 17 2025 Jerry James <loganjerry@gmail.com> - 2.7.3-6
- Add patch for GCC 15 compatibility
* Tue Jan 14 2025 Jerry James <loganjerry@gmail.com> - 2.7.3-5
- Move configuration actions to %conf
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Wed Jul 17 2024 Jerry James <loganjerry@gmail.com> - 2.7.3-3
- Minor spec file simplifications