Full description
libsemigroups is a C++14 library containing implementations of
    several algorithms for computing finite, and finitely presented,
    semigroups and monoids. Namely:
      * the Froidure-Pin algorithm for computing finite semigroups;
      * the Todd-Coxeter algorithm for finitely presented semigroups
        and monoids;
      * the Knuth-Bendix algorithm for finitely presented semigroups
        and monoids;
      * the Schreier-Sims algorithm for permutation groups;
      * a preliminary implementation of the Konieczny and Lallement-
        McFadden algorithm for computing finite semigroups which act
        on sets;
      * an implementation of the Radoszewski-Rytter algorithm for
        testing equivalence of words in free bands;
      * an implementation of the algorithm for solving the word problem
        for small overlap monoids, and for computing normal forms in
        such monoids;
      * a version of Sims low index subgroup algorithm for computing
        one-sided congruences of a semigroup or monoid;
      * a version of Stephen's procedure for finitely presented
        semigroups and monoids (for a given word w this procedure
        is for determining words equivalent to w or that are left
        divisors of w).