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

FroidurePin
===========

.. doxygenclass:: libsemigroups::FroidurePin
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::FroidurePin


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

   * - :cpp:member:`const_element_type`
     - Type of const elements.


   * - :cpp:member:`const_iterator`
     - Return type of :cpp:member:`cbegin`  and :cpp:member:`cend` .


   * - :cpp:member:`const_iterator_idempotents`
     - 
   * - :cpp:member:`const_iterator_sorted`
     - 
   * - :cpp:member:`const_pointer`
     - Type of element const pointers.


   * - :cpp:member:`const_reference`
     - Type of element const references.


   * - :cpp:member:`const_reverse_iterator`
     - 
   * - :cpp:member:`const_reverse_iterator_sorted`
     - 
   * - :cpp:member:`element_type`
     - Type of the elements.


   * - :cpp:member:`reference`
     - Type of element references.


   * - :cpp:member:`state_type`
     - Type of the state used for multiplication (if any).


   * - :cpp:member:`value_type`
     - Alias for :cpp:member:`element_type` .



Adapter member types
--------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`Complexity`
     - 
   * - :cpp:member:`Degree`
     - 
   * - :cpp:member:`EqualTo`
     - 
   * - :cpp:member:`Hash`
     - 
   * - :cpp:member:`IncreaseDegree`
     - 
   * - :cpp:member:`Less`
     - 
   * - :cpp:member:`One`
     - 
   * - :cpp:member:`Product`
     - 
   * - :cpp:member:`Swap`
     - 

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

   * - :cpp:member:`FroidurePin() <FroidurePin::FroidurePin()>`
     - 
   * - :cpp:member:`FroidurePin(FroidurePin &&) = default`
     - Default move constructor.


   * - :cpp:member:`FroidurePin(FroidurePin const&)`
     - 
   * - :cpp:member:`FroidurePin(T const &) <template <typename T, typename = EnableIfIsState<T>>  FroidurePin(T const &)>`
     - 
   * - :cpp:member:`FroidurePin(std::initializer_list<element_type>)`
     - 
   * - :cpp:member:`FroidurePin(std::shared_ptr\<T>) <template <typename T, typename = EnableIfIsState<T>>  FroidurePin(std::shared_ptr<T>)>`
     - 
   * - :cpp:member:`FroidurePin(std::vector<element_type> const&)`
     - 

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

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


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



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

   * - :cpp:member:`add_generator(const_reference)`
     - 
   * - :cpp:member:`add_generators(T const&) <template <typename T> void add_generators(T const&)>`
     - 
   * - :cpp:member:`add_generators(T const&, T const&) <template <typename T> void add_generators(T const&, T const&)>`
     - 
   * - :cpp:member:`add_generators(std::initializer_list<const_element_type>)`
     - 
   * - :cpp:member:`closure(T const&) <template <typename T> void closure(T const&)>`
     - 
   * - :cpp:member:`closure(std::initializer_list<const_element_type>)`
     - 
   * - :cpp:member:`copy_add_generators(T const &) const <template <typename T> FroidurePin copy_add_generators(T const &) const>`
     - 
   * - :cpp:member:`copy_add_generators(std::initializer_list< element_type >)`
     - 
   * - :cpp:member:`copy_closure(T const &) <template <typename T> FroidurePin copy_closure(T const &)>`
     - 
   * - :cpp:member:`copy_closure(std::initializer_list< element_type >)`
     - 
   * - :cpp:member:`state() const`
     - 

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

   * - :cpp:member:`factorisation(const_reference)`
     - 
   * - :cpp:member:`minimal_factorisation(const_reference)`
     - 
   * - :cpp:member:`word_to_element(word_type const &) const`
     - 

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

   * - :cpp:member:`at(element_index_type)`
     - 
   * - :cpp:member:`contains(const_reference)`
     - 
   * - :cpp:member:`current_position(const_reference) const`
     - 
   * - :cpp:member:`generator(letter_type) const`
     - 
   * - :cpp:member:`operator[](element_index_type) const`
     - 
   * - :cpp:member:`position(const_reference)`
     - 
   * - :cpp:member:`sorted_at(element_index_type)`
     - 
   * - :cpp:member:`sorted_position(const_reference)`
     - 

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

   * - :cpp:member:`begin() const`
     - 
   * - :cpp:member:`cbegin() const`
     - 
   * - :cpp:member:`cbegin_idempotents()`
     - 
   * - :cpp:member:`cbegin_sorted()`
     - 
   * - :cpp:member:`cend() const`
     - 
   * - :cpp:member:`cend_idempotents()`
     - 
   * - :cpp:member:`cend_sorted()`
     - 
   * - :cpp:member:`crbegin() const`
     - 
   * - :cpp:member:`crbegin_sorted()`
     - 
   * - :cpp:member:`crend() const`
     - 
   * - :cpp:member:`crend_sorted()`
     - 
   * - :cpp:member:`end() const`
     - 

Virtual functions from FroidurePinBase
--------------------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`equal_to(word_type const &,word_type const &) const override`
     - 
   * - :cpp:member:`fast_product(element_index_type,element_index_type) const override`
     - 
   * - :cpp:member:`is_finite() const override`
     - 
   * - :cpp:member:`is_idempotent(element_index_type) override`
     - 
   * - :cpp:member:`number_of_generators() const noexcept override`
     - 
   * - :cpp:member:`number_of_idempotents() override`
     - 
   * - :cpp:member:`position_to_sorted_position(element_index_type) override`
     - 
   * - :cpp:member:`reserve(size_t) override`
     - 

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

   * - :cpp:member:`batch_size() const noexcept`
     - 
   * - :cpp:member:`batch_size(size_t) noexcept`
     - 
   * - :cpp:member:`cayley_graph_type`
     - Type for a left or right Cayley graph.


   * - :cpp:member:`cbegin_rules() const`
     - 
   * - :cpp:member:`cend_rules() const`
     - 
   * - :cpp:member:`concurrency_threshold() const noexcept`
     - 
   * - :cpp:member:`concurrency_threshold(size_t) noexcept`
     - 
   * - :cpp:member:`current_length(element_index_type) const`
     - 
   * - :cpp:member:`current_max_word_length() const noexcept`
     - 
   * - :cpp:member:`current_number_of_rules() const noexcept`
     - 
   * - :cpp:member:`current_position(letter_type) const`
     - 
   * - :cpp:member:`current_position(std::initializer_list< size_t > const &) const`
     - 
   * - :cpp:member:`current_position(word_type const &) const`
     - 
   * - :cpp:member:`current_size() const noexcept`
     - 
   * - :cpp:member:`degree() const noexcept`
     - 
   * - :cpp:member:`element_index_type`
     - 
   * - :cpp:member:`enumerate(size_t)`
     - 
   * - :cpp:member:`factorisation(element_index_type)`
     - 
   * - :cpp:member:`factorisation(word_type&, element_index_type)`
     - 
   * - :cpp:member:`final_letter(element_index_type) const`
     - 
   * - :cpp:member:`first_letter(element_index_type) const`
     - 
   * - :cpp:member:`immutable() const noexcept`
     - 
   * - :cpp:member:`immutable(bool) noexcept`
     - 
   * - :cpp:member:`is_monoid()`
     - 
   * - :cpp:member:`left(element_index_type,letter_type)`
     - 
   * - :cpp:member:`left_cayley_graph()`
     - 
   * - :cpp:member:`length(element_index_type)`
     - 
   * - :cpp:member:`max_threads() const noexcept`
     - 
   * - :cpp:member:`max_threads(size_t) noexcept`
     - 
   * - :cpp:member:`minimal_factorisation(element_index_type)`
     - 
   * - :cpp:member:`minimal_factorisation(word_type &,element_index_type)`
     - 
   * - :cpp:member:`minimal_factorisation(word_type &,element_index_type) const`
     - 
   * - :cpp:member:`number_of_rules()`
     - 
   * - :cpp:member:`prefix(element_index_type) const`
     - 
   * - :cpp:member:`product_by_reduction(element_index_type,element_index_type) const`
     - 
   * - :cpp:member:`right(element_index_type,letter_type)`
     - 
   * - :cpp:member:`right_cayley_graph()`
     - 
   * - :cpp:member:`size()`
     - 
   * - :cpp:member:`size_type`
     - Unsigned integer type.


   * - :cpp:member:`suffix(element_index_type) const`
     - 

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

   * - :cpp:member:`dead() const noexcept`
     - 
   * - :cpp:member:`finished() const`
     - 
   * - :cpp:member:`kill() noexcept`
     - 
   * - :cpp:member:`report() const`
     - 
   * - :cpp:member:`report_every() const noexcept`
     - 
   * - :cpp:member:`report_every(TIntType) <template <typename TIntType> void report_every(TIntType)>`
     - 
   * - :cpp:member:`report_every(std::chrono::nanoseconds)`
     - 
   * - :cpp:member:`report_why_we_stopped() const`
     - 
   * - :cpp:member:`run()`
     - 
   * - :cpp:member:`run_for(TIntType) <template <typename TIntType> void run_for(TIntType)>`
     - 
   * - :cpp:member:`run_for(std::chrono::nanoseconds)`
     - 
   * - :cpp:member:`run_until(T&&) <template <typename T> void run_until(T&&)>`
     - 
   * - :cpp:member:`run_until(bool(*)())`
     - 
   * - :cpp:member:`running() const noexcept`
     - 
   * - :cpp:member:`running_for() const noexcept`
     - 
   * - :cpp:member:`running_until() const noexcept`
     - 
   * - :cpp:member:`started() const`
     - 
   * - :cpp:member:`stopped() const`
     - 
   * - :cpp:member:`stopped_by_predicate() const`
     - 
   * - :cpp:member:`timed_out() const`
     - 

.. toctree::
   :hidden:

   libsemigroups__froidurepin__member_types.rst
   libsemigroups__froidurepin__adapter_member_types.rst
   libsemigroups__froidurepin__constructors.rst
   libsemigroups__froidurepin__deleted_constructors.rst
   libsemigroups__froidurepin__initialisation.rst
   libsemigroups__froidurepin__factorisation_and_relations.rst
   libsemigroups__froidurepin__membership.rst
   libsemigroups__froidurepin__iterators.rst
   libsemigroups__froidurepin__virtual_functions_from_froidurepinbase.rst
   libsemigroups__froidurepin__member_functions_inherited_from_froidurepinbase.rst
   libsemigroups__froidurepin__member_functions_inherited_from_runner.rst
