Changelog

v1.2.1 (released 28/06/2020)

This is an exceedingly minor release removing some extraneous files from, and adding one essential file to, the distro.

v1.2.0 (released 28/06/2020)

In this release some new features have been added and some bugs have been fixed. The new features in this version of libsemigroups were implemented by J. D. Mitchell and M. Tsalakou.

The major new features in this release are:

  • an implementation of Gilman’s Algorithm [Gil79] to construct an automaton that allows for counting, and iterating through, the normal forms of strings in a KnuthBendix instance. This automaton is accessible via the member function gilman_digraph. Using this approach significantly improves the performance of the size member function of KnuthBendix and allows a KnuthBendix instance to know whether or not it is infinite.

  • improvements to the algorithm used by the number_of_paths member function of the class template ActionDigraph, and the ability to specify the algorithm to be used.

  • the class template ActionDigraph gets new member functions: nr_edges for a node; number_of_paths with a single node as argument; number_of_paths_algorithm which returns a value in an enum describing the algorithm used by number_of_paths by default.

  • the functions topological_sort and add_cycle in the namespace libsemigroups::action_digraph_helper

  • the function number_of_words for counting the number of words with length in a given range over an alphabet of specified size.

  • the class template ActionDigraph gets new static member functions random for outputing a random action digraph with a given number of edges; and random_acyclic.

There were also several further minor improvements and bug fixes implemented in this version, many of which arose while developing libsemigroups_cppyy. Thanks to Murray Whyte for pointing out several of these bugs.

One major bug was also resolved: sometimes a KnuthBendix instance refusing to run even though the rules it contained were not reduced (but were confluent).

v1.1.0 (released 28/05/2020)

This is a minor release which adds some new features and fixes some bugs.

The more major new features in this release are:

  • iterators for words and strings with respect to lexicographic and short-lex orders (cbegin_wilo, cbegin_wislo, cbegin_silo, cbegin_sislo)

  • the class template FroidurePin now has member functions for iterating through its rules (cbegin_rules)

  • the namespace action_digraph_helper is introduced. This namespace contains the helper functions follow_path, is_acyclic, is_reachable, validate_node, and validate_label for the class template ActionDigraph.

  • the class template ActionDigraph has new member functions for iterating through nodes in reverse (crbegin_nodes); for iterating through paths (cbegin_panilo, cbegin_panislo, cbegin_pilo, cbegin_pislo, cbegin_pstilo, and cbegin_pstislo); and for counting the number of paths starting at a source (and optionally ending at a target) node (number_of_paths).

The more major bugs fixed are:

  • the class FpSemigroup member functions nr_rules, run_until, and run_for now behave as expected

  • a fix so that libsemigroups can be used with fmt version 6.2.0 was made.

  • a bug was resolved in FroidurePin::word_to_pos which resulted in incorrect results for instances with duplicate generators.

There were also several further minor improvements and bug fixes implemented in this version, many of which arose while developing libsemigroups_cppyy. Thanks to Murray Whyte for pointing out several of these bugs.

v1.0.9 (released 20/04/2020)

This is an exceedingly minor release removing some extraneous files from the distro.

v1.0.8 (released 20/04/2020)

This is another minor release fixing some minor issues, again mostly highlighted from libsemigroups_cppyy

v1.0.7 (released 17/03/2020)

This is a minor release fixing some minor issues, mostly highlighted from libsemigroups_cppyy

v1.0.6 (released 09/02/2020)

This is a minor release fixing some bugs.

v1.0.5 (released 13/01/2020)

This is a minor release with some minor changes to the documentation and build system. The non-trivial changes in this release were made by Isuru Fernando

v1.0.4 (released 11/01/2020)

This is a minor release with several improvements to the build system. It is now possible to build libsemigroups using an external installation of fmt with the configure option --with-external-fmt, and it should also be possible to build libsemigroups on non-x86 architectures.

v1.0.3 (released 07/12/2019)

This is a minor release that includes some fixes that caused tests to fail on 32-bit systems. The non-trivial changes in this release were made by J. James

v1.0.2 (released 30/11/2019)

This is a very minor release to fix a bad test that failed in the conda package continuous integration.

v1.0.1 (released 29/11/2019)

This is a minor release to resolve some issues with the conda package, and to remove some compiler warnings.

v1.0.0 (released 27/11/2019)

This is a major release that dramatically expands the scope of libsemigroups. In v1.0.0, libsemigroups has been almost completely rewritten, generalised, and some new features have been added.