Skip to content

hivert/libsemigroups

 
 

Repository files navigation

libsemigroups - Version 1.0.5

Documentation Status

image

Launch Binder

image

image

image

image

image

image

C++ library for semigroups and monoids

What is libsemigroups?

libsemigroups is a C++11 library containing implementations of several algorithms for computing finite and finitely presented semigroups. Namely:

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

The main classes in libsemigroups are named after the algorithms they implement; for example, libsemigroups::FroidurePin, libsemigroups::congruence::ToddCoxeter, libsemigroups::fpsemigroup::KnuthBendix, and libsemigroups::SchreierSims.

The implementations in libsemigroups::FroidurePin and libsemigroups::SchreierSims are generic and easily adapted to user-defined types.

libsemigroups uses: HPCombi which uses the SSE and AVX instruction sets for very fast manipulation of transformations, partial permutations, permutations, and boolean matrices of small size; catch for tests; and fmt for reporting.

How to use it

See the documentation https://libsemigroups.readthedocs.io/en/latest/

Installation instructions are here https://libsemigroups.readthedocs.io/en/latest/install.html

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.

Author

J. D. Mitchell

Contributors

  • F. Hivert contributed many helpful ideas to libsemigroups, an allocator implementation (to be included in a future version), and HPCombi.
  • J. James contributed some bugfixes.
  • J. Jonušas contributed to the implementation of the Froidure-Pin algorithm.
  • D. V. Pasechnik contributed to the build system.
  • F. Smith contributed to the Todd-Coxeter implementation, and to BMat8s.
  • N. Thiery contributed to the build system, packaging libsemigroups via conda, the python bindings and many helpful conversations and suggestions.
  • M. Torpey contributed to the congruences code in the v0.0.1 to v0.6.7.

Acknowledgements

We acknowledge financial support from the OpenDreamKit Horizon 2020 European Research Infrastructures project (#676541) (primarily for the python bindings).

We thank the Carnegie Trust for the Universities of Scotland for funding the PhD scholarship of J. Jonušas when he worked on this project.

We thank the Engineering and Physical Sciences Research Council (EPSRC) for funding the PhD scholarship of M. Torpey when he worked on this project (EP/M506631/1).

Packages

No packages published

Languages

  • C++ 94.9%
  • M4 2.9%
  • Python 0.6%
  • Shell 0.5%
  • Makefile 0.5%
  • CMake 0.4%
  • Other 0.2%