libsemigroups  v3.0.0
C++ library for semigroups and monoids
Loading...
Searching...
No Matches
libsemigroups

libsemigroups

image image image image codecov

What is libsemigroups?

libsemigroups is a C++17 library containing implementations of several algorithms for computing finite, and finitely presented, semigroups and monoids. The main algorithms implemented in libsemigroups are:

libsemigroups is partly based on Algorithms for computing finite semigroups, Expository Slides, and Semigroupe 2.01 by Jean-Eric Pin.

libsemigroups is used in the Semigroups package for GAP (see [45]), and it is possible to use libsemigroups directly in Python 3 via the package libsemigroups_pybind11. The development version of libsemigroups is available on github, and some related projects are here.

Design principles

The main classes in libsemigroups are named after the algorithms they implement; see, for example, libsemigroups::FroidurePin, libsemigroups::Konieczny, libsemigroups::ToddCoxeter, libsemigroups::Kambites, libsemigroups::KnuthBendix, libsemigroups::SchreierSims, libsemigroups::Sims1, libsemigroups::Sims2, or libsemigroups::Stephen.

libsemigroups is a modern open source C++ library designed to be:

How to use libsemigroups

See the documentation https://libsemigroups.github.io/libsemigroups/.

Installation

See the installation page for more info.

Issues

If you find any problems with libsemigroups, or have any suggestions for features that you'd like to see, please use the issue tracker.

Dependencies

libsemigroups uses:

  • Catch2 for tests and benchmarks;
  • eigen for some linear algebra computations [28];
  • fmt for string formatting;
  • HPCombi which uses the SSE and AVX instruction sets for very fast manipulation of transformations, partial permutations, permutations, and boolean matrices of small size;
  • backward-cpp for beautiful backtraces;
  • magic_enum for static reflection for enums;
  • rx-ranges the minimalist ranges library for C++17.

We'd like to thank the authors and contributors to these excellent projects!

Authors

Contributors

Acknowledgements

We thank: