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

Presentation
============

.. doxygenclass:: libsemigroups::Presentation
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::Presentation


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

   * - :cpp:member:`const_iterator`
     - Type of a const iterator to either side of a rule.


   * - :cpp:member:`iterator`
     - Type of an iterator to either side of a rule.


   * - :cpp:member:`letter_type`
     - 
   * - :cpp:member:`size_type`
     - Size type for rules.


   * - :cpp:member:`word_type`
     - The type of the words in the rules of a :cpp:any:`Presentation`  object.



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

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


   * - :cpp:member:`Presentation(Presentation const &) = default`
     - Default copy constructor.


   * - :cpp:member:`clear()`
     - 
   * - :cpp:member:`operator=(Presentation &&) = default`
     - Default move assignment operator.


   * - :cpp:member:`operator=(Presentation const &) = default`
     - Default copy assignment operator.



Alphabet + letters
------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`alphabet() const noexcept`
     - 
   * - :cpp:member:`alphabet(size_type)`
     - 
   * - :cpp:member:`alphabet(word_type const&)`
     - 
   * - :cpp:member:`alphabet(word_type&&)`
     - 
   * - :cpp:member:`alphabet_from_rules()`
     - 
   * - :cpp:member:`contains_empty_word() const noexcept`
     - 
   * - :cpp:member:`contains_empty_word(bool) noexcept`
     - 
   * - :cpp:member:`in_alphabet(letter_type) const`
     - 
   * - :cpp:member:`index(letter_type) const`
     - 
   * - :cpp:member:`letter(size_type) const`
     - 

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

   * - :cpp:member:`add_rule(S,S,T,T) <template <typename S, typename T> Presentation & add_rule(S,S,T,T)>`
     - 
   * - :cpp:member:`add_rule_and_check(S,S,T,T) <template <typename S, typename T> Presentation & add_rule_and_check(S,S,T,T)>`
     - 
   * - :cpp:member:`rules`
     - 

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

   * - :cpp:member:`validate() const`
     - 
   * - :cpp:member:`validate_alphabet() const`
     - 
   * - :cpp:member:`validate_letter(letter_type) const`
     - 
   * - :cpp:member:`validate_rules() const`
     - 
   * - :cpp:member:`validate_word(T, T) const <template <typename T> void validate_word(T, T) const>`
     - 

.. toctree::
   :hidden:

   libsemigroups__presentation__member_types.rst
   libsemigroups__presentation__constructors.rst
   libsemigroups__presentation__alphabet___letters.rst
   libsemigroups__presentation__rules.rst
   libsemigroups__presentation__validation.rst
