Recent Releases of libsemigroups

libsemigroups - 3.1.3

This is a minor release that does the following:

  • Add a to_human_readable_repr for the Action class by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/777
  • Update the to_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/778
  • Mark IsBipartition, 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/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_monoid by @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.py compatible 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_ONLY by @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 Sims benchmarks 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 ToWord by @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 SimsRefinerIdeals by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/710
  • Konieczny: fix typos in to_human_readable_repr by @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 SomeThing are in the namespace some_thing;

  • most classes now use iterators exclusively in their interfaces (rather than word_type or std::string objects 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 Presentation objects;
    • can be instantiated with any type of words (usually word_type or std::string);
    • it is now possible to use KnuthBendix to compute one-sided congruences;
    • it is now possible to use ToddCoxeter to compute monoid as well as semigroup presentations;
    • there is a variant of KnuthBendix that uses a trie for rewriting;
    • a significant amount of functionality has been added to Sims1 (for one-sided low index congruences), and Sims2 (for two-sided low index congruences) has also been added.
    • the class template InversePresentation for finitely presented inverse semigroups and monoids was introduced, and can be used as the input to Stephen, which, in this case, implements Stephen's procedure for inverse semigroups.
  • the enum congruence_kind used to contain three values 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;

  • the class ActionDigraph has been renamed WordGraph for consistency with the mathematical literature;

  • some functionality that used to be in ActionDigraph has been move into the classes Gabow and Paths for ease of use;

  • the class Dot facilitates 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 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;

  • throughout the library, functions with the suffix _no_checks do not check their arguments are valid; while those without this suffix will throw an exception if their arguments are invalid;

  • conversion from one libsemigroups type to another is now exclusively via the function template to. 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 the make function. The make function 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;

  • libsemigroups now 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-stats and --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_letter by @james-d-mitchell in https://github.com/libsemigroups/libsemigroups/pull/464
  • Properly initialise RepOrc by @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_monoid presentation 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 -> -mavx by @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_word presentation 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_subword and 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_generators by @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_subword by @MTWhyte in https://github.com/libsemigroups/libsemigroups/pull/394
  • Fix broken link in CONTRIBUTING.rst by @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 identity static member function of the StaticMatrix class 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_form member function of the Kambites class 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=native by -march=avx by @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_pin of a congruence with infinitely many classes;
  • some exception messages were corrected for Bipartition objects;
  • 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 FroidurePin and ActionDigraph were 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 Runner was given proper copy and move constructors
  • some performance improvements were made to Konieczny by Finn Smith
  • some minor updates were made to FroidurePin and its documentation
  • some missing adapters for KBE and TCE were 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 Element class was removed
  • the UFOld class was removed (replaced by Suf and Duf in v1.3.4)

The following backwards incompatible changes have been made:

  • every function including _nr_ has been renamed using _number_of_ for consistency
  • const has been removed from all function parameters passed by value
  • congruence_type was renamed congruence_kind for consistency
  • CongruenceByPairsHelper was renamed CongruenceByPairs
  • Congruence::policy was renamed Congruence::options
  • FroidurePin::copy_closure returns by value instead of returning a pointer
  • FroidurePin::copy_add_generators returns by value instead of returning a pointer
  • FroidurePin::letter_to_pos was renamed FroidurePin::current_position
  • FroidurePin::length_const was renamed FroidurePin::length
  • FroidurePin::length_non_const was renamed FroidurePin::current_length (again for consistency)
  • FroidurePin::word_to_pos was renamed FroidurePin::current_position
  • KnuthBendix::policy was renamed KnuthBendix::options
  • ToddCoxeter::policy was renamed ToddCoxeter::options

The following files were renamed:

  • libsemigroups-config.hpp was renamed config.hpp
  • libsemigroups-debug.hpp was renamed debug.hpp
  • libsemigroups-exception.hpp was renamed exception.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-eigen is 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_ENABLED was incorrectly used in report.cpp and some weirdness ensued when libsemigroups was system installed (via make install). Resolved by J. D. Mitchell.
  • the configuration options --disable-fmt and --enable-fmt did the same thing. Resolved by J. D. Mitchell.
  • it was possible to create invalid PBR objects, which caused some incorrect values to be returned by FroidurePin<PBR> instances. The to_string implementation for PBR\'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_infinite function for congruences, and finitely presented semigroups and monoids. When libsemigroups is compiled with eigen enabled (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. eigen is 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 libsemigroups has 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 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).

- 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 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.

- 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 Semigroup class. 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:

  1. an incorrect assert in the NaturalSemiring constructor method which asserted that the threshold had to be >0 instead of >=0

  2. fixed 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