Recent Releases of libsemigroups
libsemigroups - 3.1.3
This is a minor release that does the following:
- Add a
to_human_readable_reprfor theActionclass by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/777 - Update the
to_human_readable_reprof theCongruenceclass to be more consistent with theKnuthBendixandToddCoxeterclasses by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/778 - Mark
IsBipartition,IsPBR,IsPresentation,IsInversePresentationandIsWordGraphas deprecated, to be favoured byis_specialization_ofby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/771
- C++
Published by Joseph-Edwards 7 months ago
libsemigroups - 3.1.2
This is a minor release fixing some more issues that were introduced in v3.1.0. Namely:
- Remove remaining occurrences of
std::basic_string<uint8_t>by @joseph-edwards in https://github.com/libsemigroups/libsemigroups/pull/772
- C++
Published by Joseph-Edwards 7 months ago
libsemigroups - 3.1.1
This 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.
- C++
Published by Joseph-Edwards 7 months ago
libsemigroups - 3.1.0
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.
- Add presentation for the
abacus_jones_monoidby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/711 - Fix issue 557 by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/717
- Alphabetise Low Index menu section by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/719
- Throw if bad degree by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/723
- word-graph: group digits in WordGraph repr by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/725
- word-graph: fix lastnodeon_path doc by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/727
- Fix transf corner cases by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/724
- Make
check_doxygen_line_breaks.pycompatible with Python 3.9 by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/728 - Fix greedy presentation issue by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/726
- action: fix add_seed issue by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/729
- Update doxygen-awesome by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/732
- build: properly set
FMT_HEADER_ONLYby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/733 - to: fix
to<Presentation>(kb)by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/731 - Add more
Simsbenchmarks and improve benchmarking infrastructure by @reiniscirpons in https://github.com/libsemigroups/libsemigroups/pull/715 - ToddCoxeter fixes by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/730
- Prevent bad accesses of empty containers by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/737
- exception: default visibility by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/736
- konieczny: reference returned by add_generator/s by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/738
- Fix return types by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/739
- Use groupdigits in all tohumanreadablerepr by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/741
- kbe: make it easier to use in python bindings by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/740
- Update my coordinates in README.md by @dimpase in https://github.com/libsemigroups/libsemigroups/pull/742
- Update the v2 changelog for v2.7.4 by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/744
- Look behind by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/745
- todd-coxeter: doc fixes by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/746
- Todd coxeter redefine by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/747
- print: split into separate file by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/748
- multi-view: implement from MultiStringView by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/749
- Presentation updates by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/751
- Template
ToWordby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/750 - Add AhoCorasickImpl with strong alphabet constraints by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/752
- Knuth bendix performance improvements by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/753
- Reorganise the doc by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/755
- C++
Published by james-d-mitchell 8 months ago
libsemigroups - 2.7.4
This is a minor release mainly to include the fix of https://github.com/libsemigroups/libsemigroups/issues/557 in https://github.com/libsemigroups/libsemigroups/pull/558.
No such issue exists from v3.0.0 of libsemigroups onwards, but currently the Semigroups package for GAP requires v2 of libsemigroups, which is the reason for this release. See:
https://github.com/semigroups/Semigroups/issues/1064
Unless you are cloning libsemigroups to use in the GAP package Semigroups, then please use version v3.0.3 or higher of libsemigroups. We are preparing a new version of the Semigroups package for GAP that uses libsemigroups version 3, and this will (hopefully) be the final version 2 release of libsemigroups.
- C++
Published by james-d-mitchell 9 months ago
libsemigroups - 3.0.3
What's Changed
- Fix issue 557 by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/717
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v3.0.2...v3.0.3
- C++
Published by james-d-mitchell 11 months ago
libsemigroups - 3.0.2
What's Changed
- Fix issue in
SimsRefinerIdealsby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/710 - Konieczny: fix typos in
to_human_readable_reprby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/714
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v3.0.1...v3.0.2
- C++
Published by james-d-mitchell 11 months ago
libsemigroups - 3.0.1
What's Changed
- Fix issue #703 by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/704
- Add include libsemigroups/ to pc.in file by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/705
- ci: add aarch64 job to os by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/706
- Patch readme by @Joseph-Edwards in https://github.com/libsemigroups/libsemigroups/pull/707
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v3.0.0...v3.0.1
- C++
Published by james-d-mitchell 11 months ago
libsemigroups - 3.0.0
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:
reporting during a computation has been greatly improved (both in its appearance and the mechanism used to ensure that feedback is produced at regular intervals);
class interfaces were reduced in size, with member functions only calling other public member functions being moved into a helper namespace. Helper functions for
SomeThingare in the namespacesome_thing;most classes now use iterators exclusively in their interfaces (rather than
word_typeorstd::stringobjects as in version 2);all of the classes and class templates for computing congruences over finitely presented semigroups and monoids (
Congruence,Kambites,KnutBendix,ToddCoxeter,Sims1,Sims2,Stephen):- have a common set of constructors, primarily from
Presentationobjects; - can be instantiated with any type of words (usually
word_typeorstd::string); - it is now possible to use
KnuthBendixto compute one-sided congruences; - it is now possible to use
ToddCoxeterto compute monoid as well as semigroup presentations; - there is a variant of
KnuthBendixthat uses a trie for rewriting; - a significant amount of functionality has been added to
Sims1(for one-sided low index congruences), andSims2(for two-sided low index congruences) has also been added. - the class template
InversePresentationfor finitely presented inverse semigroups and monoids was introduced, and can be used as the input toStephen,which, in this case, implements Stephen's procedure for inverse semigroups.
- have a common set of constructors, primarily from
the enum
congruence_kindused to contain three valuesleft,right, andtwosided. Essentially every algorithm in the library for computingleftcongruences 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 incongruence_kindonesidedandtwosided, whereonesidedalways means right. Left congruences can be computed as right congruences of the dual semigroup or monoid;the class
ActionDigraphhas been renamedWordGraphfor consistency with the mathematical literature;some functionality that used to be in
ActionDigraphhas been move into the classesGabowandPathsfor ease of use;the class
Dotfacilitates the creation and rendering of graph descriptions in the DOT language of the Graphviz graph drawing software;every constructor of every class in
libsemigroups(except the copy/move constructor and the copy/move assignment operators) has a correspondinginitfunction. 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;throughout the library, functions with the suffix
_no_checksdo not check their arguments are valid; while those without this suffix will throw an exception if their arguments are invalid;conversion from one
libsemigroupstype to another is now exclusively via the function templateto. Previously, these were entangled in some classes;many constructors for classes where it is expected that many instances will be created (such as
Transf,for example) do not perform any checks on their arguments. Alternative versions of these constructors, that do perform checks, are available using themakefunction. Themakefunction also provides some alternate convenience constructors that only use the public member functions of the underlying class;the documentation is now generated solely by Doxygen and doxygen-awesome-css;
compiling with fmt enabled is now required;
libsemigroupsnow vendors and uses copies of:- magic_enum for static reflection for enums;
- rx-ranges the minimalist ranges library for C++17;
some configuration flags have been withdrawn (
--enable-statsand--enable-verbose);range objects are used fairly extensively throughout the library.
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.
- C++
Published by james-d-mitchell 12 months ago
libsemigroups - v2.7.3
This is a minor release where some minor issues have been resolved;
- configure.ac: fix shell equality test by @orlitzky in https://github.com/libsemigroups/libsemigroups/pull/490
- Optimise Konieczny by @flsmith in https://github.com/libsemigroups/libsemigroups/pull/491
- C++
Published by james-d-mitchell about 2 years ago
libsemigroups - 2.7.2
This is a minor release where some minor issues have been resolved.
- C++
Published by james-d-mitchell over 2 years ago
libsemigroups - 2.7.1
In this release a couple of bugs in presentation::sort_rules are resolved:
- present: fix sort_rules bug by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/478
- C++
Published by james-d-mitchell almost 3 years ago
libsemigroups - 2.7.0
This is a minor release with some new features and bug fixes:
- Remove a pessimizing move by @jamesjer in https://github.com/libsemigroups/libsemigroups/pull/467
- More new features for presentations by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/473
- Allow computation of strongly connected components of non-complete word graphs by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/474
- Ukkonen: expose suffix tree impl by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/476
- C++
Published by james-d-mitchell almost 3 years ago
libsemigroups - 2.6.2
This is a minor release adding the configuration options --enable-backward, and --disable-backward, and some related changes to the build system.
- C++
Published by james-d-mitchell about 3 years ago
libsemigroups - 2.6.1
This is a minor release with some fixes and improvements to exception messages, the documentation, and:
- backward-cpp: add backward files by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/462
- Remove auto return type from
first_unused_letterby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/464 - Properly initialise
RepOrcby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/465
- C++
Published by james-d-mitchell about 3 years ago
libsemigroups - 2.6.0
This is a minor releast including some new features related to presentations for semigroups and monoids.
* Add a second symmetric group presentation due to Moore by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/431
* Add three functions to presentation namespace by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/436
* Add presentation for the monoid of partial isometries of a cycle graph by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/433
* suffix-tree: fix longest common subword issue by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/451
* word: implement user-defined literal _w for word_type by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/449
* New helper functions for Presentation by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/453
* Add congruence_kind argument check to ToddCoxeter function to_gap_string by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/455
- C++
Published by james-d-mitchell about 3 years ago
libsemigroups - 2.5.1
This is a minor release that resolves a number of minor issues.
- C++
Published by james-d-mitchell about 3 years ago
libsemigroups - 2.5.0
In this release a small number of issues are resolved, and one major new feature is added. The features added in this release are:
- Add
order_preserving_monoidpresentation by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/428 - Add presentations for the cyclic inverse monoid, and its order-preserving part by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/426
- Stephen by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/403
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v2.4.1...v2.5.0
- C++
Published by james-d-mitchell about 3 years ago
libsemigroups - 2.4.1
This is a minor release fixing some issues in the build system that should have been included in the last release.
- Change
-march=avx->-mavxby @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/418
- C++
Published by james-d-mitchell about 3 years ago
libsemigroups - 2.4.0
In this release a number of bugs and other minor issues were resolved. The new features in this release are:
New features:
- Add
replace_wordpresentation helper by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/388 - A library of examples of finite presentations was added by @MTWhyte.
Issues resolved:
- Fix issue with
replace_subwordand the empty word by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/384 - build: add missing eigen3 to pkg-config file by @jengelh in https://github.com/libsemigroups/libsemigroups/pull/414
- Fix
Konieczny::add_generatorsby @flsmith in https://github.com/libsemigroups/libsemigroups/pull/420
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.3.2
In this release a number of bugs and other minor issues were resolved.
- Fix inaccurate exception specification for
replace_subwordby @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/394 - Fix broken link in
CONTRIBUTING.rstby @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/396 - matrix: add case for some Apple clang weirdness by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/401. This might be a bug in clang versions 13 and 14, which caused the
identitystatic member function of theStaticMatrixclass template to not properly initialise the matrix being constructed. - string-view: fix bug in append method by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/399. This bug sometimes caused the
normal_formmember function of theKambitesclass template to return incorrect results, or sometimes to cause a crash.
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.3.1
In this release a number of corner cases in the Sims1 class are fixed:
* sometimes number_of_congruences erroneously returned 0 for the number of congruences with 1 class;
* if an empty presentation (no generators or relations) was used to initialise short_rules, then the Sims1::for_each and Sims1::find_if could crash;
* a more serious bug which could cause an invalid read beyond the end of a container (caused by the erroneous assumption that the containers were always of even length). Thanks to J. James for reporting this issue.
* a bug in replace_subword which lead to an infinite recursion being entered if the argument existing was a suffix of replacement, or if existing was empty.
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.3.0
In this release a number of minor issues a fixed, some improvements are made, and the Sims1 class has been redesigned and improved to implement a parallel version of the low index congruences algorithm.
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.2.3
This is a minor release fixing a number of minor issues, and including some minor improvements.
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.2.2
This is a minor release fixing a number of minor issues, and including some minor improvements.
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.2.1
This is a minor release fixing a data race (probably) caused by setting the global locale, that sometimes caused a crash.
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.2.0
What's Changed
- Sims Low-Index Congruence Algorithm by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/349
- Add permutation group intersections (for real this time) by @reiniscirpons in https://github.com/libsemigroups/libsemigroups/pull/351
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v2.1.5...v2.2.0
- C++
Published by james-d-mitchell over 3 years ago
libsemigroups - 2.1.5
v2.1.5 (released 21/04/2022)
This is a minor release with a few minor changes:
- schreier-sims: fix issue #343 by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/344
- Replace
-march=nativeby-march=avxby @fingolfin in https://github.com/libsemigroups/libsemigroups/pull/345
@fingolfin made their first contribution in https://github.com/libsemigroups/libsemigroups/pull/345 welcome @fingolfin!
- C++
Published by james-d-mitchell almost 4 years ago
libsemigroups - 2.1.4
This is a minor release with with a few minor changes:
- it is now possible to create the
quotient_froidure_pinof a congruence with infinitely many classes; - some exception messages were corrected for
Bipartitionobjects; - compilation of v2.1.0 to v2.1.3 did not work in cygwin for Windows;
- there was a file missing in the archive, which meant that it wasn't possible to build the documentation.
- C++
Published by james-d-mitchell almost 4 years ago
libsemigroups - 2.1.3
This is a minor release with some performance improvements in: ActionDigraph::number_of_paths (eigen is used in some circumstances when available); the suffix tree implementation (used by Kambites); and in KnuthBendix.
- C++
Published by james-d-mitchell about 4 years ago
libsemigroups - 2.1.2
This is another very minor release resolving an issue in the last release on 32-bit systems raised by Jan Engelhardt.
- C++
Published by james-d-mitchell over 4 years ago
libsemigroups - 2.1.1
This is a very minor release resolving an issue in the last release pointed out by Jan Engelhardt.
- C++
Published by james-d-mitchell over 4 years ago
libsemigroups - 2.1.0
The following new features, improvements, and fixes are included in this release:
- new implementations of the linear time algorithm by Kambites for equality checking and the algorithm by Mitchell and Tsalakou for finding normal forms in small overlap monoids in the class
Kambites(@james-d-mitchell and @mariatsalakou https://github.com/libsemigroups/libsemigroups/pull/278) - a performance improvement in the implementation of Konieczny algorithm, for determining the structure of a finite semigroup or monoid (@flsmith https://github.com/libsemigroups/libsemigroups/pull/297 https://github.com/libsemigroups/libsemigroups/pull/304)
- an implement of the linear time algorithm by Radoszewski and Rytter for checking equality of words in free bands in the function
freeband_equal_to(@reiniscirpons https://github.com/libsemigroups/libsemigroups/pull/298) - a major revision, expansion of the settings, and improvement in the performance of the implementation of the Todd-Coxeter algorithm in the class
ToddCoxeter(@james-d-mitchell https://github.com/libsemigroups/libsemigroups/pull/313 https://github.com/libsemigroups/libsemigroups/pull/318) - some other minor issues in the class templates
FroidurePinandActionDigraphwere resolved (@james-d-mitchell https://github.com/libsemigroups/libsemigroups/pull/299 https://github.com/libsemigroups/libsemigroups/pull/300)
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v2.0.3...v2.1.0
- C++
Published by james-d-mitchell over 4 years ago
libsemigroups - 2.0.3
What's Changed
- froidure-pin: fix issue for python bindings by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/314
Full Changelog: https://github.com/libsemigroups/libsemigroups/compare/v2.0.2...v2.0.3
- C++
Published by james-d-mitchell over 4 years ago
libsemigroups - 2.0.2
This release includes some missing operators, adapters, and doc were added.
- C++
Published by james-d-mitchell over 4 years ago
libsemigroups - 2.0.1
This release includes some improvements and minor fixes including:
- some remnants of C++11 in the code and docs were removed
- the class
Runnerwas given proper copy and move constructors - some performance improvements were made to
Koniecznyby Finn Smith - some minor updates were made to
FroidurePinand its documentation - some missing adapters for
KBEandTCEwere implemented.
- C++
Published by james-d-mitchell over 4 years ago
libsemigroups - 2.0.0
This release includes a major rewrite of the functionality in libsemigroups for matrices, transformations, and other elements of semigroups. libsemigroups has been updated to use C++14 (from C++11), and some simplifications were made as a consequence. The documentation has been improved, some deprecated functionality was remove, and other minor improvements, and simplifications were made. The included version of eigen was updated from version 3.3.7 to 3.3.9.
J. James contributed some improvements to the build system, and some additional updates were made which arose from warnings issued by newer versions of autotools.
The following function was added:
-
Action::cache_scc_multipliers
The following deprecated functionality was removed:
-
FroidurePin::FroidurePin(std::vector<element_type> const*) -
FroidurePin::reset_next_relation -
FroidurePin::next_relation - the
Elementclass was removed - the
UFOldclass was removed (replaced bySufandDufin v1.3.4)
The following backwards incompatible changes have been made:
- every function including
_nr_has been renamed using_number_of_for consistency -
consthas been removed from all function parameters passed by value -
congruence_typewas renamedcongruence_kindfor consistency -
CongruenceByPairsHelperwas renamedCongruenceByPairs -
Congruence::policywas renamedCongruence::options -
FroidurePin::copy_closurereturns by value instead of returning a pointer -
FroidurePin::copy_add_generatorsreturns by value instead of returning a pointer -
FroidurePin::letter_to_poswas renamedFroidurePin::current_position -
FroidurePin::length_constwas renamedFroidurePin::length -
FroidurePin::length_non_constwas renamedFroidurePin::current_length(again for consistency) -
FroidurePin::word_to_poswas renamedFroidurePin::current_position -
KnuthBendix::policywas renamedKnuthBendix::options -
ToddCoxeter::policywas renamedToddCoxeter::options
The following files were renamed:
-
libsemigroups-config.hppwas renamedconfig.hpp -
libsemigroups-debug.hppwas renameddebug.hpp -
libsemigroups-exception.hppwas renamedexception.hpp
- C++
Published by james-d-mitchell almost 5 years ago
libsemigroups - 1.3.7
This is a minor release for with a bug in Konieczny fixed by Finn Smith, and a limit added to CongruenceByPairs to try to resolve https://github.com/semigroups/Semigroups/issues/634 (again).
- C++
Published by james-d-mitchell about 5 years ago
libsemigroups - 1.3.6
This is a minor release for compatibility with the GAP package Semigroups.
- C++
Published by james-d-mitchell about 5 years ago
libsemigroups - 1.3.5
This is a minor release fixing a bug in the ToddCoxeter class (the contains member function could return false negatives in some cases after shrink_to_fit was called).
- C++
Published by james-d-mitchell about 5 years ago
libsemigroups - 1.3.4
This is a minor release resolving the following issues:
- the tests failed when the hardware concurrency was limited to 1 (reported by Bernhard M. Wiedemann)
- compilation failed when in debug mode
- there were some bugs in the string formatting in exceptions on 32-bit systems
- the disjoint sets data structures were refactored completely, and their performance improved.
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.3.3
This is a minor release resolving an issue with make install including a copy of eigen3 when it should not have. Reported by Antonio Rojas.
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.3.2
This is a minor release resolving some issues in the build system, and some issues related to PBRs.
The issues resolved are:
- eigen support is enabled if the configure flag
--with-external-eigenis given. Resolved by J. James. - the order the compile flags related to HPCombi were appended was changed, so that they do not override user-provided
CFLAGS. Reported by Jan Engelhardt and fixed by J. D. Mitchell. - the macro
LIBSEMIGROUPS_FMT_ENABLEDwas incorrectly used inreport.cppand some weirdness ensued whenlibsemigroupswas system installed (viamake install). Resolved by J. D. Mitchell. - the configuration options
--disable-fmtand--enable-fmtdid the same thing. Resolved by J. D. Mitchell. - it was possible to create invalid
PBRobjects, which caused some incorrect values to be returned byFroidurePin<PBR>instances. Theto_stringimplementation forPBR\'s also didn\'t work properly in all cases. Resolved by Finn Smith.
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.3.1
This is a tediously minor release to fix some issues in the last release.
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.3.0
In this release some new features have been added and some issues have been resolved. The new features in this version of libsemigroups were implemented by Reinis Cirpons, J. D. Mitchell, and Finn Smith.
The major new feature in this release is:
- an implementation of the Konieczny-Lallement-McFadden Algorithm for computing finite semigroups (Finn Smith and J. D. Mitchell).
The major improvements in this release are:
- an improvement to the
is_obviously_infinitefunction for congruences, and finitely presented semigroups and monoids. Whenlibsemigroupsis compiled witheigenenabled (as it is by default), then an integer matrix can be associated to a finite presentation, if this matrix does not have full rank, then the associated finitely presented semigroup or monoid is infinite.eigenis used to perform the computation of the rank of this matrix if available (Reinis Cirpons and J. D. Mitchell). - the time it takes to compile
libsemigroupshas be reduced.
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.2.1
This is an exceedingly minor release removing some extraneous files from, and adding one essential file to, the distro.
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.2.0
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 to construct an automaton that allows for counting, and iterating through, the normal forms of strings in a
KnuthBendixinstance. This automaton is accessible via the member functiongilman_digraph. Using this approach significantly improves the performance of thesizemember function ofKnuthBendixand allows aKnuthBendixinstance to know whether or not it is infinite. - improvements to the algorithm used by the
number_of_pathsmember function of the class templateActionDigraph, and the ability to specify the algorithm to be used. - the class template
ActionDigraphgets new member functions:nr_edgesfor a node;number_of_pathswith a single node as argument;number_of_paths_algorithmwhich returns a value in an enum describing the algorithm used bynumber_of_pathsby default. - the functions
topological_sortandadd_cyclein the namespacelibsemigroups::action_digraph_helper - the function
number_of_wordsfor counting the number of words with length in a given range over an alphabet of specified size. - the class template
ActionDigraphgets new static member functionsrandomfor outputing a random action digraph with a given number of edges; andrandom_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).
- C++
Published by james-d-mitchell over 5 years ago
libsemigroups - 1.1.0
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
FroidurePinnow has member functions for iterating through its rules (cbegin_rules) - the namespace
action_digraph_helperis introduced. This namespace contains the helper functionsfollow_path,is_acyclic,is_reachable,validate_node, andvalidate_labelfor the class templateActionDigraph. - the class template
ActionDigraphhas 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, andcbegin_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
FpSemigroupmember functionsnr_rules,run_until, andrun_fornow behave as expected - a fix so that
libsemigroupscan be used withfmtversion 6.2.0 was made. - a bug was resolved in
FroidurePin::word_to_poswhich 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.
- C++
Published by james-d-mitchell almost 6 years ago
libsemigroups - 1.0.9
This is an exceedingly minor release removing some extraneous files from the distro.
- C++
Published by james-d-mitchell almost 6 years ago
libsemigroups - 1.0.8
This is another minor release fixing some minor issues, again mostly highlighted from libsemigroups_cppyy.
- C++
Published by james-d-mitchell almost 6 years ago
libsemigroups - 1.0.7
This is a minor release fixing some minor issues, mostly highlighted from libsemigroups_cppyy mostly pointed out by Josh Paik and Murray Whyte.
- C++
Published by james-d-mitchell almost 6 years ago
libsemigroups - 1.0.6
This is a minor release fixing some bugs.
- C++
Published by james-d-mitchell about 6 years ago
libsemigroups - 1.0.5
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.
- C++
Published by james-d-mitchell about 6 years ago
libsemigroups - 1.0.4
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.
- C++
Published by james-d-mitchell about 6 years ago
libsemigroups - 1.0.3
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][].
- C++
Published by james-d-mitchell about 6 years ago
libsemigroups - 1.0.2
This is a very minor release to fix a bad test that failed in the conda package continuous integration.
- C++
Published by james-d-mitchell over 6 years ago
libsemigroups - 1.0.1
This is a minor release to resolve some issues with the conda package, and to remove some compiler warnings.
- C++
Published by james-d-mitchell over 6 years ago
libsemigroups - 1.0.0
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.
- C++
Published by james-d-mitchell over 6 years ago
libsemigroups - 0.6.7
This is a minor release updating README.md with more information about the configuration options. Thanks to D. V. Pasechnik.
- C++
Published by james-d-mitchell almost 7 years ago
libsemigroups - 0.6.6
This is a very minor release deleting a bad test (which failed in the conda-forge CI), and fixing a typo in the README.
- C++
Published by james-d-mitchell almost 7 years ago
libsemigroups - 0.6.5
This is a minor release that incorporates libsemigroups.pc.in for pkg-config added by D. V. Pasechnik.
- C++
Published by james-d-mitchell almost 7 years ago
libsemigroups - 0.6.4
This release fixes one minor, and one less minor issues:
there was a compiler warning (about unused lambda capture), which has now been removed
there was an underflow a member function of the
Semigroupclass. This did not cause an error, or incorrect output, as far as we can tell (see Issue #101). This is now fixed.
- C++
Published by james-d-mitchell over 7 years ago
libsemigroups - 0.6.3
This release resolves some issues with the Congruence class, that could result in incorrect results, or (incorrect) assertion failures. This issue was highlighted in:
https://github.com/gap-packages/Semigroups/issues/450
where an instance of the Congruence class was repeatedly queried and only ran for very short intervals of time (some 10s of microseconds), which sometimes resulted in the nested class Congruence::TC being invalid.
- C++
Published by james-d-mitchell about 8 years ago
libsemigroups - 0.6.2
This is a minor release fixing some issues related to some C++11 bugs in older versions of GCC.
- C++
Published by james-d-mitchell about 8 years ago
libsemigroups - 0.6.1
This release contains one minor bugfix (from Finn Smith) and a minor change to the build system.
- C++
Published by james-d-mitchell about 8 years ago
libsemigroups - 0.6.0
This release includes a vastly improved version of the Knuth-Bendix algorithm for the RWS class. Several methods are added to RWS to allow a degree of control over the running of Knuth-Bendix.
- C++
Published by james-d-mitchell about 8 years ago
libsemigroups - 0.5.2
A very minor release attempting to not use the C++11 keyword thread_local on old versions of clang. This is to allow the conda package to be updated.
- C++
Published by james-d-mitchell over 8 years ago
libsemigroups - 0.5.1
This is a minor release with some changes to the build system, in particular, to the configuration setup. Also we do not use the thread_local keyword on versions of GCC before 4.9.
- C++
Published by james-d-mitchell over 8 years ago
libsemigroups - 0.5.0
In this release, the main changes are in the Element class, which is made more robust, the hash functions are improved, a swap method is introduced, and duplicate code is removed.
- C++
Published by james-d-mitchell over 8 years ago
libsemigroups - 0.4.1
This is a minor release for compatibility with older versions of clang. See Issue 380 of the Semigroups package for GAP for some more details.
- C++
Published by james-d-mitchell over 8 years ago
libsemigroups - 0.4.0
In this release, the main changes are in the Semigroup class, which is made more robust and iterators are introduced for their elements, sorted elements, and idempotents.
- C++
Published by james-d-mitchell over 8 years ago
libsemigroups - 0.3.2
This is a minor release with some tweaks to the build system, and some improvements to performance, namely to semigroups of matrices over certain semirings.
- C++
Published by james-d-mitchell over 8 years ago
libsemigroups - 0.3.1
This is a minor release with some bug fixes, and the method is_obviously_infinite for the Congruence class is introduced.
- C++
Published by james-d-mitchell almost 9 years ago
libsemigroups - 0.3.0
This release includes a revised version of the RWS class which now has better memory management, and fixes some minor issues.
- C++
Published by james-d-mitchell almost 9 years ago
libsemigroups - 0.2.2
This release includes some files missing in the release archive, and fixes a bug which was causing the Semigroups GAP package tests fail.
- C++
Published by james-d-mitchell almost 9 years ago
libsemigroups - 0.2.1
This release fixes two bugs:
an incorrect assert in the NaturalSemiring constructor method which asserted that the threshold had to be
>0instead of>=0fixed a heisenbug in the Congruence::test_equals method.
- C++
Published by james-d-mitchell almost 9 years ago
libsemigroups - 0.2.0
The build system was completely revised, some internal reorganising was performed, and one minor bug was fixed.
- C++
Published by james-d-mitchell almost 9 years ago