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.- Exceptions
This function is
noexcept
and is guaranteed never to throw.- Complexity
Constant.
- Parameters
(None)
- 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.- Exceptions
This function is
noexcept
and is guaranteed never to throw.- Complexity
Constant.
- Parameters
(None)
- 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.- Exceptions
This function is
noexcept
and is guaranteed never to throw.- Complexity
Constant.
- Parameters
(None)
- 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.- Exceptions
This function throws if the implementation throws.
- 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.
- See
- 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.- 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.- Exceptions
This function throws if the implementation throws.
- 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.
- See
- 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.- 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 2-sided 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 2-sided,
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