.. Copyright (c) 2019-22, J. D. Mitchell

   Distributed under the terms of the GPL license version 3.

   The full license is in the file LICENSE, distributed with this software.

   This file was auto-generated by docs/generate_from_yml.py, do not edit.

FroidurePinBase
===============

.. doxygenclass:: libsemigroups::FroidurePinBase
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::FroidurePinBase


Member types
------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`cayley_graph_type`
     - Type for a left or right Cayley graph.


   * - :cpp:member:`const_rule_iterator`
     - Return type of :cpp:member:`cbegin_rules`  and :cpp:member:`cend_rules` .


   * - :cpp:member:`element_index_type`
     - Type for the index of an element.


   * - :cpp:member:`size_type`
     - Unsigned integer type.



Constructors
------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`FroidurePinBase() <FroidurePinBase::FroidurePinBase()>`
     - Default constructor.


   * - :cpp:member:`FroidurePinBase(FroidurePinBase &&) = default`
     - Default move constructor.


   * - :cpp:member:`FroidurePinBase(FroidurePinBase const&)`
     - Copy constructor.



Deleted constructors
--------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`operator=(FroidurePinBase &&) = delete`
     - Deleted.


   * - :cpp:member:`operator=(FroidurePinBase const &) = delete`
     - Deleted.



Settings
--------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`batch_size() const noexcept`
     - Returns the current value of the batch size.


   * - :cpp:member:`batch_size(size_t) noexcept`
     - Set a new value for the batch size.


   * - :cpp:member:`concurrency_threshold() const noexcept`
     - Returns the current value of the concurrency threshold.


   * - :cpp:member:`concurrency_threshold(size_t) noexcept`
     - Set the threshold for concurrency to be used by member functions.


   * - :cpp:member:`immutable() const noexcept`
     - Returns the current immutability.


   * - :cpp:member:`immutable(bool) noexcept`
     - Set immutability.


   * - :cpp:member:`max_threads() const noexcept`
     - Returns the current value of the maximum number of threads.


   * - :cpp:member:`max_threads(size_t) noexcept`
     - Set the maximum number of threads.



Attributes
----------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`current_number_of_rules() const noexcept`
     - Returns the number of relations that have been found so far.


   * - :cpp:member:`current_size() const noexcept`
     - Returns the number of elements so far enumerated.


   * - :cpp:member:`degree() const noexcept`
     - Returns the degree of any and all elements.


   * - :cpp:member:`enumerate(size_t)`
     - Enumerate until at least a specified number of elements are found.


   * - :cpp:member:`is_monoid()`
     - Check if the semigroup is a monoid.


   * - :cpp:member:`size()`
     - Returns the size.



Cayley graphs
-------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`left(element_index_type,letter_type)`
     - Returns the index of the product of a generator and an element.


   * - :cpp:member:`left_cayley_graph()`
     - Returns a const reference to the left Cayley graph.


   * - :cpp:member:`right(element_index_type,letter_type)`
     - Returns the index of the product of an element and a generator.


   * - :cpp:member:`right_cayley_graph()`
     - Returns a const reference to the right Cayley graph.



Factorisation, products, and relations
--------------------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`cbegin_rules() const`
     - Returns a forward iterator pointing to the first rule (if any).


   * - :cpp:member:`cend_rules() const`
     - Returns a forward iterator pointing one past the last rule (if any).


   * - :cpp:member:`current_length(element_index_type) const`
     - Returns the length of the short-lex least word.


   * - :cpp:member:`current_max_word_length() const noexcept`
     - Returns the maximum length of a word in the generators so far computed.


   * - :cpp:member:`current_position(letter_type) const`
     - Returns the position in of the generator with specified index.


   * - :cpp:member:`current_position(std::initializer_list< size_t > const &) const`
     - Returns the position corresponding to a word.


   * - :cpp:member:`current_position(word_type const &) const`
     - Returns the position corresponding to a word.


   * - :cpp:member:`factorisation(element_index_type)`
     - Returns a word representing an element given by index.


   * - :cpp:member:`factorisation(word_type&, element_index_type)`
     - Obtain a word representing an element given by index.


   * - :cpp:member:`length(element_index_type)`
     - Returns the length of the short-lex least word.


   * - :cpp:member:`minimal_factorisation(element_index_type)`
     - Returns a short-lex least word representing an element given by index.


   * - :cpp:member:`minimal_factorisation(word_type &,element_index_type)`
     - Obtain a short-lex least word representing an element given by index.


   * - :cpp:member:`minimal_factorisation(word_type &,element_index_type) const`
     - Obtain a short-lex least word representing an element given by index.


   * - :cpp:member:`number_of_rules()`
     - Returns the total number of relations in the presentation.


   * - :cpp:member:`product_by_reduction(element_index_type,element_index_type) const`
     - Compute a product using the Cayley graph.



Prefixes and suffixes
---------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`final_letter(element_index_type) const`
     - Returns the last letter of the element with specified index.


   * - :cpp:member:`first_letter(element_index_type) const`
     - Returns the first letter of the element with specified index.


   * - :cpp:member:`prefix(element_index_type) const`
     - Returns the position of the longest proper prefix.


   * - :cpp:member:`suffix(element_index_type) const`
     - Returns the position of the longest proper suffix.



Member functions inherited from Runner
--------------------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`dead() const noexcept`
     - Check if the runner is dead.


   * - :cpp:member:`finished() const`
     - Check if :cpp:member:`run`  has been run to completion or not.


   * - :cpp:member:`kill() noexcept`
     - Stop :cpp:member:`run`  from running (thread-safe).


   * - :cpp:member:`report() const`
     - Check if it is time to report.


   * - :cpp:member:`report_every() const noexcept`
     - Get the minimum elapsed time between reports.


   * - :cpp:member:`report_every(TIntType) <template <typename TIntType> void report_every(TIntType)>`
     - Set the minimum elapsed time between reports.


   * - :cpp:member:`report_every(std::chrono::nanoseconds)`
     - Set the minimum elapsed time between reports.


   * - :cpp:member:`report_why_we_stopped() const`
     - Report why :cpp:member:`run`  stopped.


   * - :cpp:member:`run()`
     - Run until :cpp:member:`finished` .


   * - :cpp:member:`run_for(TIntType) <template <typename TIntType> void run_for(TIntType)>`
     - Run for a specified amount of time.


   * - :cpp:member:`run_for(std::chrono::nanoseconds)`
     - Run for a specified amount of time.


   * - :cpp:member:`run_until(T&&) <template <typename T> void run_until(T&&)>`
     - Run until a nullary predicate returns ``true`` or :cpp:member:`finished` .


   * - :cpp:member:`run_until(bool(*)())`
     - Run until a nullary predicate returns ``true`` or :cpp:member:`finished` .


   * - :cpp:member:`running() const noexcept`
     - Check if currently running.


   * - :cpp:member:`running_for() const noexcept`
     - Check if the runner is currently running for a particular length of time.


   * - :cpp:member:`running_until() const noexcept`
     - Check if the runner is currently running until a nullary predicate returns ``true``.


   * - :cpp:member:`started() const`
     - Check if :cpp:member:`run`  has been called at least once before.


   * - :cpp:member:`stopped() const`
     - Check if the runner is stopped.


   * - :cpp:member:`stopped_by_predicate() const`
     - Check if the runner was, or should, stop because of the argument for :cpp:member:`run_until` .


   * - :cpp:member:`timed_out() const`
     - Check if the amount of time passed to :cpp:member:`run_for`  has elapsed.



.. toctree::
   :hidden:

   libsemigroups__froidurepinbase__member_types.rst
   libsemigroups__froidurepinbase__constructors.rst
   libsemigroups__froidurepinbase__deleted_constructors.rst
   libsemigroups__froidurepinbase__settings.rst
   libsemigroups__froidurepinbase__attributes.rst
   libsemigroups__froidurepinbase__cayley_graphs.rst
   libsemigroups__froidurepinbase__factorisation__products__and_relations.rst
   libsemigroups__froidurepinbase__prefixes_and_suffixes.rst
   libsemigroups__froidurepinbase__member_functions_inherited_from_runner.rst
