Related semigroups¶
This page contains information about the member functions of the CongruenceInterface
class for obtaining the parent or quotient semigroup represented as a FroidurePin
instance.

bool libsemigroups::CongruenceInterface::has_parent_fpsemigroup() const noexcept¶
Check if the congruence was constructed from a FpSemigroupInterface instance.
Returns
true
if the congruence represented bythis
was created from an FpSemigroupInterface instance.If
true
is returned, thenthis
is a congruence over a semigroup represented by an FpSemigroupInterface instance. Complexity
Constant.
 Parameters
(None)
 Throws
(None) – This function is
noexcept
and is guaranteed never to throw. Returns
A
bool
.

bool libsemigroups::CongruenceInterface::has_parent_froidure_pin() const noexcept¶
Check if the congruence was constructed from a FroidurePin instance.
Returns
true
if the congruence represented bythis
was created from a FroidurePin instance.If
true
is returned, thenthis
is a congruence over a semigroup represented by a FroidurePin instance. Complexity
Constant.
 Parameters
(None)
 Throws
(None) – This function is
noexcept
and is guaranteed never to throw. Returns
A
bool
.

inline bool libsemigroups::CongruenceInterface::has_quotient_froidure_pin() const noexcept¶
Check if the quotient semigroup has been computed.
Returns
true
if the congruence represented by this object knows an isomorphic quotient semigroup represented by an instance of FroidurePin. Complexity
Constant.
 Parameters
(None)
 Throws
(None) – This function is
noexcept
and is guaranteed never to throw. Returns
A
bool
.

bool libsemigroups::CongruenceInterface::is_quotient_obviously_finite()¶
Deterministically check if the quotient is finite.
Return
true
if the number of classes in the congruence represented bythis
is obviously finite, andfalse
if it is not obviously finite.See also
 Complexity
Implementation specific, but this function is guaranteed to return a result. More specifically, this function will not trigger a computation that potentially never terminates.
 Parameters
(None)
Warning
If
true
is returned, then there are finitely many classes in the congruence, iffalse
is returned, then the number of classes can be finite or infinite. Throws
(None) – This function throws if the implementation throws.
 Returns
A
bool
.

bool libsemigroups::CongruenceInterface::is_quotient_obviously_infinite()¶
Deterministically check if the quotient is infinite.
Return
true
if the number of classes in the congruence represented bythis
is obviously infinite, andfalse
if it is not obviously infinite.See also
 Complexity
Implementation specific, but this function is guaranteed to return a result. More specifically, this function will not trigger a computation that potentially never terminates.
 Parameters
(None)
Warning
If
true
is returned, then there are infinitely many classes in the congruence, iffalse
is returned, then the number of classes can be finite or infinite. Throws
(None) – This function throws if the implementation throws.
 Returns
A
bool
.

std::shared_ptr<FpSemigroupInterface> libsemigroups::CongruenceInterface::parent_fpsemigroup() const¶
Get the parent FpSemigroupInterface instance (if any).
Returns a std::shared_ptr to the parent FpSemigroupInterface object over which the congruence represented by this object was defined, if it exists.
 Complexity
Constant.
 Parameters
(None)
 Throws
LibsemigroupsException – if
this
was not created using a FpSemigroupInterface instance. Returns
A std::shared_ptr to an FpSemigroupInterface.

std::shared_ptr<FroidurePinBase> libsemigroups::CongruenceInterface::parent_froidure_pin() const¶
Get the parent FroidurePin instance (if any).
Returns a std::shared_ptr to the parent FroidurePin over which the congruence represented by this object was defined, if it exists.
 Complexity
Constant.
 Parameters
(None)
 Throws
LibsemigroupsException – if
this
was not created using a FroidurePin instance. Returns

std::shared_ptr<FroidurePinBase> libsemigroups::CongruenceInterface::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 2sided congruence thatthis
represents. Parameters
(None)
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.Warning
The problem of determining the return value of this function is undecidable in general, and this function may never terminate.
 Throws
LibsemigroupsException – if any of the following hold:
the congruence is not 2sided,
side() != congruence_kind::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.
 Returns