libsemigroups

C++ library for semigroups and monoids

https://github.com/libsemigroups/libsemigroups

Science Score: 77.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 11 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, sciencedirect.com, springer.com, zenodo.org
  • Committers with academic emails
    9 of 19 committers (47.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (7.6%) to scientific vocabulary

Keywords

c-plus-plus-17 computer-algebra congruence enumeration monoid semigroup

Keywords from Contributors

group-theory representation-theory discrete-mathematics algebra computer-algebra-system mathematics
Last synced: 6 months ago · JSON representation ·

Repository

C++ library for semigroups and monoids

Basic Info
Statistics
  • Stars: 62
  • Watchers: 9
  • Forks: 31
  • Open Issues: 46
  • Releases: 77
Topics
c-plus-plus-17 computer-algebra congruence enumeration monoid semigroup
Created over 10 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Citation

README.md

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, 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;
  • 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!

Acknowledgements

We thank:

Owner

  • Name: libsemigroups
  • Login: libsemigroups
  • Kind: organization

Projects related to the libsemigroups C++ library for semigroups and monoids

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: libsemigroups
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Reinis
    family-names: Cirpons
    email: rc234@st-andrews.ac.uk
    affiliation: University of St Andrews
    orcid: "https://orcid.org/0000-0001-7238-1576"
  - given-names: Joseph
    family-names: Edwards
    email: jde1@st-andrews.ac.uk
    affiliation: University of St Andrews
    orcid: "https://orcid.org/0009-0005-3803-2758"
  - given-names: James
    family-names: Mitchell
    email: jdm3@st-andrews.ac.uk
    affiliation: University of St Andrews
    orcid: "https://orcid.org/0000-0002-5489-1617"
identifiers:
  - type: doi
    value: 10.5281/zenodo.10534404
repository-code: "https://github.com/libsemigroups/libsemigroups"
url: "https://libsemigroups.github.io/libsemigroups/"
abstract: >-
  A C++17 library containing implementations of several
  algorithms for computing finite, and finitely presented,
  semigroups and monoids.
license: GPL-3.0
version: 3.1.3
date-released: "2025-08-12"

GitHub Events

Total
  • Create event: 24
  • Release event: 5
  • Issues event: 32
  • Watch event: 10
  • Delete event: 18
  • Issue comment event: 279
  • Push event: 136
  • Pull request event: 231
  • Pull request review event: 135
  • Pull request review comment event: 100
  • Fork event: 2
Last Year
  • Create event: 24
  • Release event: 5
  • Issues event: 32
  • Watch event: 10
  • Delete event: 18
  • Issue comment event: 279
  • Push event: 136
  • Pull request event: 231
  • Pull request review event: 135
  • Pull request review comment event: 100
  • Fork event: 2

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 988
  • Total Committers: 19
  • Avg Commits per committer: 52.0
  • Development Distribution Score (DDS): 0.168
Past Year
  • Commits: 250
  • Committers: 8
  • Avg Commits per committer: 31.25
  • Development Distribution Score (DDS): 0.172
Top Committers
Name Email Commits
James D. Mitchell j****3@s****k 822
Michael Young m****5@s****k 63
Finn Smith f****3@s****k 29
Murray Whyte m****1@s****k 24
Reinis Cirpons r****4@s****k 11
Florent Hivert F****t@l****r 7
Jerry James l****y@g****m 6
Nicolas Thiéry n****y@u****t 5
Joseph Edwards j****1@s****k 4
Wilf Wilson w****f@w****t 4
Alex Levine a****0@s****k 2
Dima Pasechnik d****e@g****m 2
Isuru Fernando i****f@g****m 2
dependabot[bot] 4****]@u****m 2
Ilya Finkelshteyn i****f@a****m 1
Chris Russell c****6@s****k 1
Luke Elliott l****7@s****k 1
Jan Engelhardt j****h@i****e 1
Max Horn m****x@q****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 61
  • Total pull requests: 474
  • Average time to close issues: 5 months
  • Average time to close pull requests: 10 days
  • Total issue authors: 9
  • Total pull request authors: 14
  • Average comments per issue: 1.07
  • Average comments per pull request: 1.16
  • Merged pull requests: 372
  • Bot issues: 0
  • Bot pull requests: 19
Past Year
  • Issues: 18
  • Pull requests: 231
  • Average time to close issues: 18 days
  • Average time to close pull requests: 4 days
  • Issue authors: 5
  • Pull request authors: 8
  • Average comments per issue: 0.33
  • Average comments per pull request: 1.34
  • Merged pull requests: 174
  • Bot issues: 0
  • Bot pull requests: 8
Top Authors
Issue Authors
  • james-d-mitchell (32)
  • Joseph-Edwards (16)
  • MTWhyte (6)
  • jamesjer (2)
  • mtorpey (1)
  • antonio-rojas (1)
  • orlitzky (1)
  • jengelh (1)
  • reiniscirpons (1)
Pull Request Authors
  • james-d-mitchell (284)
  • Joseph-Edwards (109)
  • reiniscirpons (23)
  • MTWhyte (20)
  • dependabot[bot] (19)
  • flsmith (5)
  • nadim-241 (3)
  • jamesjer (3)
  • thierry-FreeBSD (2)
  • jengelh (2)
  • dimpase (1)
  • hivert (1)
  • euanlacy (1)
  • EwanGilligan (1)
Top Labels
Issue Labels
resolved-pending-release (12) bug (12) v3 (10) finitely-presentation-examples (8) feature-request (6) new-feature (5) CI (2) tests (2) enhancement (2) doc (2) resolved (1) wontfix (1) distro (1) build-system (1) backwards-incompatible (1) compile error (1) v2 (1) refactor (1)
Pull Request Labels
v3 (180) new-feature (21) dependencies (19) bug-fix (18) CI (16) release-candidate (13) doc (11) github_actions (6) enhancement (6) build-system (6) backwards-incompatible (5) refactor (5) v2 (5) tests (3) awaiting-creator-input (2) v4 (1) won’t-merge (1) interface-consistency (1) WIP (1)

Packages

  • Total packages: 4
  • Total downloads: unknown
  • Total dependent packages: 4
    (may contain duplicates)
  • Total dependent repositories: 4
    (may contain duplicates)
  • Total versions: 72
  • Total maintainers: 1
alpine-edge: libsemigroups-static

Library for computing semigroups and monoids (static library)

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 14.6%
Average: 15.0%
Forks count: 20.8%
Stargazers count: 24.4%
Maintainers (1)
Last synced: 6 months ago
alpine-edge: libsemigroups

Library for computing semigroups and monoids

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 14.6%
Average: 15.0%
Forks count: 20.8%
Stargazers count: 24.4%
Maintainers (1)
Last synced: 6 months ago
alpine-edge: libsemigroups-dev

Library for computing semigroups and monoids (development files)

  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent repos count: 0.0%
Dependent packages count: 14.6%
Average: 15.0%
Forks count: 20.8%
Stargazers count: 24.4%
Maintainers (1)
Last synced: 6 months ago
conda-forge.org: libsemigroups

libsemigroups is a C++ library for semigroups and monoids.

  • Versions: 42
  • Dependent Packages: 4
  • Dependent Repositories: 4
Rankings
Dependent packages count: 12.5%
Dependent repos count: 16.2%
Average: 26.3%
Forks count: 33.7%
Stargazers count: 42.8%
Last synced: 6 months ago

Dependencies

docs/environment.yml conda
  • doxygen 1.9.1
  • pip
environment.yml conda
  • libsemigroups
  • notebook
  • xeus-cling
docs/requirements.txt pypi
  • beautifulsoup4 ==4.9.3
  • breathe ==4.33.1
  • lxml ==4.9.1
  • pyyaml >=5.3.1
  • sphinx ==4.3.0
  • sphinx-copybutton ==0.3.1
  • sphinx_rtd_theme *
  • sphinxcontrib-bibtex ==2.2.0
.github/workflows/cpplint.yml actions
  • actions/checkout v1 composite
  • actions/setup-python v1 composite
  • codespell-project/actions-codespell v1.0 composite
.github/workflows/runtests.yml actions
  • Homebrew/actions/setup-homebrew master composite
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • gap-actions/setup-cygwin v1 composite
.github/workflows/clang-format-check.yml actions
  • actions/checkout v3 composite
  • jidicula/clang-format-action v4.10.1 composite