Presentation

template<typename W>
class Presentation : public libsemigroups::PresentationBase

Defined in present.hpp.

This class template can be used to construction presentations for semigroups or monoids and is intended to be used as the input to other algorithms in libsemigroups. The idea is to provide a shallow wrapper around a vector of words of type W. We refer to this vector of words as the rules of the presentation. The Presentation class template also provide some checks that the rules really defines a presentation, (i.e. it’s consistent with its alphabet), and some related functionality is available in the namespace libsemigroups::presentation.

Template Parameters:

W – the type of the underlying words.

Member types

const_iterator

Type of a const iterator to either side of a rule.

iterator

Type of an iterator to either side of a rule.

letter_type

size_type

Size type for rules.

word_type

The type of the words in the rules of a Presentation object.

Constructors

Presentation()

Presentation(Presentation &&) = default

Default move constructor.

Presentation(Presentation const &) = default

Default copy constructor.

clear()

operator=(Presentation &&) = default

Default move assignment operator.

operator=(Presentation const &) = default

Default copy assignment operator.

Alphabet + letters

alphabet() const noexcept

alphabet(size_type)

alphabet(word_type const&)

alphabet(word_type&&)

alphabet_from_rules()

contains_empty_word() const noexcept

contains_empty_word(bool) noexcept

in_alphabet(letter_type) const

index(letter_type) const

letter(size_type) const

Rules

add_rule(S,S,T,T)

add_rule_and_check(S,S,T,T)

rules

Validation

validate() const

validate_alphabet() const

validate_letter(letter_type) const

validate_rules() const

validate_word(T, T) const