Converting to a ToddCoxeter
This page contains documentation relating to converting
libsemigroups_pybind11
objects into ToddCoxeter
instances using the
to
function.
See also
The to function for an overview of possible conversions
between libsemigroups_pybind11
types.
Various uses
Recall that the signature for the to
function is to(*args, Return)
.
In what follows, we explain how different values of args and Return may be
used to construct ToddCoxeter
objects. The following options are
possible:
Converting a FroidurePin
to a ToddCoxeter
To construct a ToddCoxeter
from a FroidurePin
, specify all of the
following values for args:
knd (
congruence_kind
) – the kind of the congruence being construed;fpb (
FroidurePin
) – theFroidurePin
instance to be converted; andwg (
WordGraph
) – the left or right Cayley graph of fpb.
Additionally, specify one of the following for Return:
(ToddCoxeter, str)
for constructing aToddCoxeter
on words with typestr
.
(ToddCoxeter, list[int])
for constructing aToddCoxeter
on words with typelist[int]
.
This function converts the FroidurePin
object fpb into a
ToddCoxeter
object using the WordGraph
wg (which should be
either the FroidurePin.left_cayley_graph
or the
FroidurePin.right_cayley_graph
of fpb).
This returned ToddCoxeter
object represents the trivial congruence over
the semigroup defined by fpb.
This will throw a LibsemigroupsError
if wg is not the
FroidurePin.left_cayley_graph
or the
FroidurePin.right_cayley_graph
of fpb.
>>> from libsemigroups_pybind11 import (
... Bipartition,
... congruence_kind,
... FroidurePin,
... to,
... ToddCoxeter,
... )
>>> b1 = Bipartition([[1, -1], [2, -2], [3, -3], [4, -4]])
>>> b2 = Bipartition([[1, -2], [2, -3], [3, -4], [4, -1]])
>>> b3 = Bipartition([[1, -2], [2, -1], [3, -3], [4, -4]])
>>> b4 = Bipartition([[1, 2], [3, -3], [4, -4], [-1, -2]])
>>> S = FroidurePin(b1, b2, b3, b4)
>>> tc = to(
... congruence_kind.twosided, # knd
... S, # fpb
... S.right_cayley_graph(), # wg
... rtype=(ToddCoxeter, str),
... )
>>> tc.run()
>>> S.size() == tc.number_of_classes()
True
Converting a KnuthBendix
to a ToddCoxeter
To construct a ToddCoxeter
from a KnuthBendix
specify all of the
following values for args:
knd (
congruence_kind
) – the kind of the congruence being constructed.kb (
KnuthBendix
) – theKnuthBendix
object being converted.
Additionally, specify the following for Return:
(ToddCoxeter,)
for constructing aToddCoxeter
.
This function converts the KnuthBendix
object kb into a
ToddCoxeter
object using the right Cayley graph of the semigroup
represented by kb.
This returned ToddCoxeter
object represents the trivial congruence over
the semigroup defined by kb.
This will throw a LibsemigroupsError
if either:
kb.kind()
is notcongruence_kind.twosided
; or
kb.number_of_classes()
is not finite. In this case, useToddCoxeter(knd, kb.presentation())
instead.
>>> from libsemigroups_pybind11 import (
... congruence_kind,
... to,
... KnuthBendix,
... Presentation,
... presentation,
... ToddCoxeter,
... )
>>> p = Presentation('ab')
>>> presentation.add_rule(p, 'ab', 'ba')
>>> presentation.add_rule(p, 'aa', 'a')
>>> presentation.add_rule(p, 'bb', 'b')
>>> kb = KnuthBendix(congruence_kind.twosided, p)
>>> tc = to(
... congruence_kind.twosided, # knd
... kb, # kb
... rtype=(ToddCoxeter,)
... )
>>> tc.run()
>>> tc.number_of_classes() == kb.number_of_classes()
True