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 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
* Sun Jul 07 2024 Jerry James <loganjerry@gmail.com> 2.7.3-2
- Add 2 patches to fix documentation building
* Fri Mar 15 2024 Jerry James <loganjerry@gmail.com> 2.7.3-1
- Version 2.7.3
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.2-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Jan 09 2024 Jerry James <loganjerry@gmail.com> - 2.7.2-2
- Fix pkgconfig version number
- Stop building for 32-bit x86
* Fri Oct 20 2023 Jerry James <loganjerry@gmail.com> - 2.7.2-1
- Version 2.7.2
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jun 28 2023 Vitaly Zaitsev <vitaly@easycoding.org> - 2.7.1-2
- Rebuilt due to fmt 10 update.
* Thu Mar 30 2023 Jerry James <loganjerry@gmail.com> - 2.7.1-1
- Version 2.7.1
* Thu Mar 23 2023 Jerry James <loganjerry@gmail.com> - 2.7.0-1
- Version 2.7.0
* Tue Feb 28 2023 Jerry James <loganjerry@gmail.com> - 2.6.2-1
- Version 2.6.2
- Drop upstreamed -pessimizing-move patch
* Sat Feb 25 2023 Jerry James <loganjerry@gmail.com> - 2.6.1-1
- Version 2.6.1
- Dynamically generate python BuildRequires
- Add -pessimizing-move patch
* Tue Feb 07 2023 Jerry James <loganjerry@gmail.com> - 2.6.0-1
- Version 2.6.0
* Wed Feb 01 2023 Jerry James <loganjerry@gmail.com> - 2.5.1-2
- Explicitly depend on catch version 2
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.5.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jan 12 2023 Jerry James <loganjerry@gmail.com> - 2.5.1-1
- Version 2.5.1
* Wed Dec 07 2022 Jerry James <loganjerry@gmail.com> - 2.4.1-1
- Version 2.4.1
* Mon Dec 05 2022 Jerry James <loganjerry@gmail.com> - 2.4.0-1
- Version 2.4.0
- Refine License tag due to closer analysis of eigen3
* Sat Oct 29 2022 Jerry James <loganjerry@gmail.com> - 2.3.2-1
- Version 2.3.2
* Tue Oct 11 2022 Jerry James <loganjerry@gmail.com> - 2.3.1-1
- Version 2.3.1
- Remove -fwrapv from the build flags
* Fri Sep 23 2022 Jerry James <loganjerry@gmail.com> - 2.2.3-1
- Version 2.2.3
* Mon Sep 12 2022 Jerry James <loganjerry@gmail.com> - 2.2.2-1
- Version 2.2.2
- Convert License tag to SPDX
* Sat Aug 13 2022 Jerry James <loganjerry@gmail.com> - 2.2.1-1
- Version 2.2.1
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.2.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild