Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Implement cayley_graph method for Artin groups
Added a method to return the Cayley graph of Artin groups, requiring elements to be specified due to their infinite nature.
  • Loading branch information
cxzhong authored Dec 9, 2025
commit d66d04925f3ba10f9f559dcd577f1920d5c8dc2e
41 changes: 41 additions & 0 deletions src/sage/groups/artin.py
Original file line number Diff line number Diff line change
Expand Up @@ -710,6 +710,47 @@ def as_permutation_group(self):
"""
raise ValueError("the group is infinite")

def cayley_graph(self, side='right', simple=False, elements=None,
generators=None, connecting_set=None):
r"""
Return the Cayley graph of ``self``.

Since Artin groups are infinite, this method requires ``elements``
to be specified. It uses the generic semigroup Cayley graph
implementation.

INPUT:

- ``side`` -- ``'left'``, ``'right'``, or ``'twosided'``:
the side on which the generators act (default: ``'right'``)
- ``simple`` -- boolean (default: ``False``); if ``True``, returns
a simple graph (no loops, no labels, no multiple edges)
- ``generators`` -- list, tuple, or family of elements
of ``self`` (default: ``self.gens()``)
- ``connecting_set`` -- alias for ``generators``; deprecated
- ``elements`` -- list (or iterable) of elements of ``self``
(required for infinite groups)

OUTPUT: :class:`DiGraph`

EXAMPLES::

sage: def ball(group, radius):
....: ret = set()
....: ret.add(group.one())
....: for length in range(1, radius):
....: for w in Words(alphabet=group.gens(), length=length):
....: ret.add(prod(w))
....: return ret
sage: A = ArtinGroup(['A',2]) # needs sage.rings.number_field
sage: GA = A.cayley_graph(elements=ball(A, 4), generators=A.gens()); GA # needs sage.combinat sage.graphs sage.rings.number_field
Digraph on 14 vertices
"""
from sage.categories.semigroups import Semigroups
return Semigroups().ParentMethods.cayley_graph(
self, side=side, simple=simple, elements=elements,
generators=generators, connecting_set=connecting_set)

def coxeter_type(self):
"""
Return the Coxeter type of ``self``.
Expand Down
Loading