Examples of finite Coxeter groups

class sage.categories.examples.finite_coxeter_groups.DihedralGroup(n=5)[source]

Bases: UniqueRepresentation, Parent

An example of finite Coxeter group: the \(n\)-th dihedral group of order \(2n\).

The purpose of this class is to provide a minimal template for implementing finite Coxeter groups. See DihedralGroup for a full featured and optimized implementation.

EXAMPLES:

sage: G = FiniteCoxeterGroups().example()
>>> from sage.all import *
>>> G = FiniteCoxeterGroups().example()

This group is generated by two simple reflections \(s_1\) and \(s_2\) subject to the relation \((s_1s_2)^n = 1\):

sage: G.simple_reflections()
Finite family {1: (1,), 2: (2,)}

sage: s1, s2 = G.simple_reflections()
sage: (s1*s2)^5 == G.one()
True
>>> from sage.all import *
>>> G.simple_reflections()
Finite family {1: (1,), 2: (2,)}

>>> s1, s2 = G.simple_reflections()
>>> (s1*s2)**Integer(5) == G.one()
True

An element is represented by its reduced word (a tuple of elements of \(self.index_set()\)):

sage: G.an_element()
(1, 2)

sage: list(G)
[(),
 (1,),
 (2,),
 (1, 2),
 (2, 1),
 (1, 2, 1),
 (2, 1, 2),
 (1, 2, 1, 2),
 (2, 1, 2, 1),
 (1, 2, 1, 2, 1)]
>>> from sage.all import *
>>> G.an_element()
(1, 2)

>>> list(G)
[(),
 (1,),
 (2,),
 (1, 2),
 (2, 1),
 (1, 2, 1),
 (2, 1, 2),
 (1, 2, 1, 2),
 (2, 1, 2, 1),
 (1, 2, 1, 2, 1)]

This reduced word is unique, except for the longest element where the chosen reduced word is \((1,2,1,2\dots)\):

sage: G.long_element()
(1, 2, 1, 2, 1)
>>> from sage.all import *
>>> G.long_element()
(1, 2, 1, 2, 1)
class Element[source]

Bases: ElementWrapper

apply_simple_reflection_right(i)[source]

Implement CoxeterGroups.ElementMethods.apply_simple_reflection().

EXAMPLES:

sage: D5 = FiniteCoxeterGroups().example(5)
sage: [i^2 for i in D5]  # indirect doctest
[(), (), (), (1, 2, 1, 2), (2, 1, 2, 1), (), (), (2, 1), (1, 2), ()]
sage: [i^5 for i in D5]  # indirect doctest
[(), (1,), (2,), (), (), (1, 2, 1), (2, 1, 2), (), (), (1, 2, 1, 2, 1)]
>>> from sage.all import *
>>> D5 = FiniteCoxeterGroups().example(Integer(5))
>>> [i**Integer(2) for i in D5]  # indirect doctest
[(), (), (), (1, 2, 1, 2), (2, 1, 2, 1), (), (), (2, 1), (1, 2), ()]
>>> [i**Integer(5) for i in D5]  # indirect doctest
[(), (1,), (2,), (), (), (1, 2, 1), (2, 1, 2), (), (), (1, 2, 1, 2, 1)]
has_right_descent(i, positive=False, side='right')[source]

Implement SemiGroups.ElementMethods.has_right_descent().

EXAMPLES:

sage: D6 = FiniteCoxeterGroups().example(6)
sage: s = D6.simple_reflections()
sage: s[1].has_descent(1)
True
sage: s[1].has_descent(1)
True
sage: s[1].has_descent(2)
False
sage: D6.one().has_descent(1)
False
sage: D6.one().has_descent(2)
False
sage: D6.long_element().has_descent(1)
True
sage: D6.long_element().has_descent(2)
True
>>> from sage.all import *
>>> D6 = FiniteCoxeterGroups().example(Integer(6))
>>> s = D6.simple_reflections()
>>> s[Integer(1)].has_descent(Integer(1))
True
>>> s[Integer(1)].has_descent(Integer(1))
True
>>> s[Integer(1)].has_descent(Integer(2))
False
>>> D6.one().has_descent(Integer(1))
False
>>> D6.one().has_descent(Integer(2))
False
>>> D6.long_element().has_descent(Integer(1))
True
>>> D6.long_element().has_descent(Integer(2))
True
wrapped_class

alias of tuple

coxeter_matrix()[source]

Return the Coxeter matrix of self.

EXAMPLES:

sage: FiniteCoxeterGroups().example(6).coxeter_matrix()
[1 6]
[6 1]
>>> from sage.all import *
>>> FiniteCoxeterGroups().example(Integer(6)).coxeter_matrix()
[1 6]
[6 1]
degrees()[source]

Return the degrees of self.

EXAMPLES:

sage: FiniteCoxeterGroups().example(6).degrees()
(2, 6)
>>> from sage.all import *
>>> FiniteCoxeterGroups().example(Integer(6)).degrees()
(2, 6)
index_set()[source]

Implement CoxeterGroups.ParentMethods.index_set().

EXAMPLES:

sage: D4 = FiniteCoxeterGroups().example(4)
sage: D4.index_set()
(1, 2)
>>> from sage.all import *
>>> D4 = FiniteCoxeterGroups().example(Integer(4))
>>> D4.index_set()
(1, 2)
one()[source]

Implement Monoids.ParentMethods.one().

EXAMPLES:

sage: D6 = FiniteCoxeterGroups().example(6)
sage: D6.one()
()
>>> from sage.all import *
>>> D6 = FiniteCoxeterGroups().example(Integer(6))
>>> D6.one()
()
sage.categories.examples.finite_coxeter_groups.Example[source]

alias of DihedralGroup