![]() |
libsemigroups
v3.0.3
C++ library for semigroups and monoids
|
This 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.