quotient_froidure_pin

std::shared_ptr<FroidurePinBase> libsemigroups::CongruenceByPairsHelper::quotient_froidure_pin()

Returns a semigroup represented as an instance of a derived class of FroidurePinBase that is isomorphic to the quotient of the parent semigroup of this by the 2-sided congruence that this represents.

Return

A std::shared_ptr to FroidurePinBase.

Warning

The problem of determining the return value of this function is undecidable in general, and this function may never terminate.

Note

The returned FroidurePin instance satisfies FroidurePin::immutable() == true and so certain of its member functions (those that change the underlying mathematical object) are disabled.

Parameters

(None)

Exceptions
  • LibsemigroupsException: if any of the following hold:

    • the congruence is not 2-sided, side() != congruence_type::twosided

    • the quotient semigroup is known (or can be easily be shown to be) infinite

    • the implementation throws.

  • std::bad_alloc: if the (possibly infinite) computation uses all the available memory.