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

CongruenceWrapper
=================

.. doxygenclass:: libsemigroups::CongruenceWrapper
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::CongruenceWrapper


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

   * - :cpp:member:`wrapped_type`
     - The type of the wrapped congruence, also the template parameter ``T``.



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

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


   * - :cpp:member:`CongruenceWrapper(CongruenceWrapper const&)`
     - Default copy constructor.


   * - :cpp:member:`CongruenceWrapper(CongruenceWrapper&&) = default`
     - Deleted.


   * - :cpp:member:`CongruenceWrapper(S const&) <template <typename S>  CongruenceWrapper(S const&)>`
     - Constructor from a const reference to a :cpp:any:`FroidurePinBase` .


   * - :cpp:member:`CongruenceWrapper(std::shared_ptr<FroidurePinBase>)`
     - Constructor from a `std::shared_ptr <https://en.cppreference.com/w/cpp/memory/shared_ptr>`_ to a :cpp:any:`FroidurePinBase` .



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

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


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



CongruenceWrapper member functions
----------------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`congruence() const`
     - Get a reference to the underlying congruence.



Member functions and types inherited from FpSemigroupInterface
--------------------------------------------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`add_rule(relation_type)`
     - Add a rule using a :cpp:member:`relation_type` .


   * - :cpp:member:`add_rule(rule_type)`
     - Add a rule using a :cpp:member:`rule_type` .


   * - :cpp:member:`add_rule(std::initializer_list<size_t>, std::initializer_list<size_t>)`
     - Add a rule using two :cpp:member:`word_type`  const references.


   * - :cpp:member:`add_rule(std::string const&, std::string const&)`
     - Add a rule using two `std::string <https://en.cppreference.com/w/cpp/string/basic_string>`_ const references.


   * - :cpp:member:`add_rule(word_type const&, word_type const&)`
     - Add a rule using two :cpp:member:`word_type`  const references.


   * - :cpp:member:`add_rules(FroidurePinBase&)`
     - Add rules from a :cpp:any:`FroidurePin`  instance.


   * - :cpp:member:`add_rules(std::vector<rule_type> const&)`
     - Add rules in a vector.


   * - :cpp:member:`alphabet() const noexcept`
     - Returns a const reference to the alphabet.


   * - :cpp:member:`alphabet(size_t) const`
     - Returns the ``i`` th letter of the alphabet.


   * - :cpp:member:`cbegin_rules() const noexcept`
     - Returns an iterator pointing to the first rule.


   * - :cpp:member:`cend_rules() const noexcept`
     - Returns an iterator pointing one past the last rule.


   * - :cpp:member:`char_to_uint(char) const`
     - Convert a char to a :cpp:member:`letter_type` .


   * - :cpp:member:`char_type`
     - Type for characters.


   * - :cpp:member:`const_iterator`
     - Type for const iterators to the defining rules.


   * - :cpp:member:`equal_to(std::initializer_list<letter_type>, std::initializer_list<letter_type>)`
     - Check if two words represent the same element.


   * - :cpp:member:`equal_to(std::string const&, std::string const&) override`
     - Check if two strings represent the same element.


   * - :cpp:member:`equal_to(word_type const&, word_type const&) override`
     - Check if two words represent the same element.


   * - :cpp:member:`froidure_pin()`
     - Returns an isomorphic :cpp:any:`FroidurePin`  instance.


   * - :cpp:member:`has_froidure_pin() const noexcept`
     - Check if an isomorphic :cpp:any:`FroidurePin`  instance is known.


   * - :cpp:member:`has_identity() const noexcept`
     - Check if an identity has been set.


   * - :cpp:member:`identity() const`
     - Returns the identity (if any).


   * - :cpp:member:`inverses() const`
     - Returns the inverses (if any).


   * - :cpp:member:`is_obviously_finite()`
     - Check if the finitely presented semigroup is obviously finite.


   * - :cpp:member:`is_obviously_infinite()`
     - Check if the finitely presented semigroup is obviously infinite.


   * - :cpp:member:`normal_form(std::initializer_list<letter_type>)`
     - Returns a normal form for a :cpp:member:`word_type` .


   * - :cpp:member:`normal_form(std::string const&) override`
     - Returns a normal form for a string.


   * - :cpp:member:`normal_form(word_type const&) override`
     - Returns a normal form for a :cpp:member:`word_type` .


   * - :cpp:member:`number_of_rules() const noexcept`
     - Returns the number of rules.


   * - :cpp:member:`rule_type`
     - Type for rules.


   * - :cpp:member:`set_alphabet(size_t)`
     - Set the size of the alphabet.


   * - :cpp:member:`set_alphabet(std::string const&)`
     - Set the alphabet of the finitely presented semigroup.


   * - :cpp:member:`set_identity(letter_type)`
     - Set a character in :cpp:member:`alphabet()`  to be the identity using its index.


   * - :cpp:member:`set_identity(std::string const&)`
     - Set a character in :cpp:member:`alphabet()`  to be the identity.


   * - :cpp:member:`set_inverses(std::string const&)`
     - Set the inverses of letters in :cpp:member:`alphabet()` .


   * - :cpp:member:`size() override`
     - Returns the size of the finitely presented semigroup.


   * - :cpp:member:`string_to_word(std::string const&) const`
     - Convert a string to a :cpp:member:`word_type` .


   * - :cpp:member:`string_type`
     - Type for strings.


   * - :cpp:member:`to_gap_string()`
     - Returns a string containing `GAP <https://www.gap-system.org/>`_ commands for defining a finitely presented semigroup.


   * - :cpp:member:`uint_to_char(letter_type) const`
     - Convert a :cpp:member:`letter_type`  to a ``char``.


   * - :cpp:member:`validate_letter(char) const`
     - Validates a letter specified by a ``char``.


   * - :cpp:member:`validate_letter(letter_type) const`
     - Validates a letter specified by an integer.


   * - :cpp:member:`validate_word(std::string const&) const`
     - Validates a word given by a `std::string <https://en.cppreference.com/w/cpp/string/basic_string>`_.


   * - :cpp:member:`validate_word(word_type const&) const`
     - Validates a word given by a :cpp:member:`word_type` .


   * - :cpp:member:`word_to_string(word_type const&) const`
     - Convert a :cpp:member:`word_type`  to a `std::string <https://en.cppreference.com/w/cpp/string/basic_string>`_.



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__congruencewrapper__member_types.rst
   libsemigroups__congruencewrapper__constructors.rst
   libsemigroups__congruencewrapper__deleted_constructors.rst
   libsemigroups__congruencewrapper__congruencewrapper_member_functions.rst
   libsemigroups__congruencewrapper__member_functions_and_types_inherited_from_fpsemigroupinterface.rst
   libsemigroups__congruencewrapper__member_functions_inherited_from_runner.rst
