This release contains a number of improvements, bug fixes, and a small number of new features:
is_obviously_infinite(Kambites) respects generating pairs by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/791is_obviously_infinite before running in Congruence::number_of_classes by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/790This is a minor release that does the following:
to_human_readable_repr for the Action class by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/777to_human_readable_repr of the Congruence class to be more consistent with the KnuthBendix and ToddCoxeter classes by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/778IsBipartition, IsPBR, IsPresentation, IsInversePresentation and IsWordGraph as deprecated, to be favoured by is_specialization_of by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/771This 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.