This is a minor release fixing some more issues that were introduced in v3.1.0. Namely:
std::basic_string<uint8_t>
by @joseph-edwards in https://github.com/libsemigroups/libsemigroups/pull/772This is a minor release fixing some issues in the previous release. It is currently only possible to construct KnuthBendix
objects using presentations with at most 128
generators. This is properly checked, and a meaningful exception is thrown.
This release contains a number of bugfixes, and other improvements. In particular, the performance of the Todd-Coxeter and Knuth-Bendix algorithms has been improved.
abacus_jones_monoid
by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/711check_doxygen_line_breaks.py
compatible with Python 3.9 by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/728FMT_HEADER_ONLY
by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/733to<Presentation>(kb)
by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/731Sims
benchmarks and improve benchmarking infrastructure by @reiniscirpons in https://github.com/libsemigroups/libsemigroups/pull/715ToWord
by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/750This is a minor release fixing some issues in the previous v3 releases. Namely:
This is a minor release fixing some issues in the previous v3 releases. Namely:
SimsRefinerIdeals
by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/710to_human_readable_repr
by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/714This is a minor release to fix some issues in the last release, namely:
make install
were not correct (thanks to Antonio Rojas for pointing this out);libsemigroups-3.0.0/libsemigroups-3.0.0
when unpacked under some circumstances, which prevented the conda feedstock from updating correctly;README.md
.This release includes a major refactor of the interfaces of the main algorithms in libsemigroups
with the view to making them easier to use, more uniform, simpler, and more composable. The extent of the refactor means that it is likely that code written using earlier versions of libsemigroups
will not compile.
Perhaps the biggest changes are:
SomeThing
are in the namespace some_thing
;std::string
objects as in version 2);std::string
);left
, right
, and twosided
. Essentially every algorithm in the library for computing left
congruences simply reversed the relations in the input presentation. However, the output was not "reversed", which led to some inconsistencies and opportunities for confusion. As a consequence, there are only two values in congruence_kind onesided
and twosided
, where onesided
always means right. Left congruences can be computed as right congruences of the dual semigroup or monoid;ActionDigraph
has been renamed WordGraph
for consistency with the mathematical literature;ActionDigraph
has been move into the classes Gabow and Paths for ease of use;libsemigroups
(except the copy/move constructor and the copy/move assignment operators) has a corresponding init
function. These functions put the object into the same state as if they had been newly constructed, but they do not necessarily relinquish any memory allocated;_no_checks
do not check their arguments are valid; while those without this suffix will throw an exception if their arguments are invalid;libsemigroups
type to another is now exclusively via the function template to. Previously, these were entangled in some classes;libsemigroups
now vendors and uses copies of:--enable-stats
and --enable-verbose
);libsemigroups
has been updated to use C++17 (from C++14), and some simplifications were made as a consequence. The documentation has been improved, some deprecated (or now unnecessary) functionality was removed.