Affine Weyl groups#

class sage.categories.affine_weyl_groups.AffineWeylGroups[source]#

Bases: Category_singleton

The category of affine Weyl groups

Todo

add a description of this category

EXAMPLES:

sage: C = AffineWeylGroups(); C
Category of affine Weyl groups
sage: C.super_categories()
[Category of infinite Weyl groups]

sage: C.example()
NotImplemented
sage: W = WeylGroup(["A", 4, 1]); W                                             # needs sage.combinat sage.groups
Weyl Group of type ['A', 4, 1] (as a matrix group acting on the root space)
sage: W.category()                                                              # needs sage.combinat sage.groups
Category of irreducible affine Weyl groups
>>> from sage.all import *
>>> C = AffineWeylGroups(); C
Category of affine Weyl groups
>>> C.super_categories()
[Category of infinite Weyl groups]

>>> C.example()
NotImplemented
>>> W = WeylGroup(["A", Integer(4), Integer(1)]); W                                             # needs sage.combinat sage.groups
Weyl Group of type ['A', 4, 1] (as a matrix group acting on the root space)
>>> W.category()                                                              # needs sage.combinat sage.groups
Category of irreducible affine Weyl groups
class ElementMethods[source]#

Bases: object

affine_grassmannian_to_core()[source]#

Bijection between affine Grassmannian elements of type \(A_k^{(1)}\) and \((k+1)\)-cores.

INPUT:

  • self – an affine Grassmannian element of some affine Weyl group of type \(A_k^{(1)}\)

Recall that an element \(w\) of an affine Weyl group is affine Grassmannian if all its all reduced words end in 0, see is_affine_grassmannian().

OUTPUT:

  • a \((k+1)\)-core

EXAMPLES:

sage: # needs sage.combinat sage.groups
sage: W = WeylGroup(['A', 2, 1])
sage: w = W.from_reduced_word([0,2,1,0])
sage: la = w.affine_grassmannian_to_core(); la
[4, 2]
sage: type(la)
<class 'sage.combinat.core.Cores_length_with_category.element_class'>
sage: la.to_grassmannian() == w
True

sage: w = W.from_reduced_word([0,2,1])                                  # needs sage.combinat sage.groups
sage: w.affine_grassmannian_to_core()                                   # needs sage.combinat sage.groups
Traceback (most recent call last):
...
ValueError: this only works on type 'A' affine Grassmannian elements
>>> from sage.all import *
>>> # needs sage.combinat sage.groups
>>> W = WeylGroup(['A', Integer(2), Integer(1)])
>>> w = W.from_reduced_word([Integer(0),Integer(2),Integer(1),Integer(0)])
>>> la = w.affine_grassmannian_to_core(); la
[4, 2]
>>> type(la)
<class 'sage.combinat.core.Cores_length_with_category.element_class'>
>>> la.to_grassmannian() == w
True

>>> w = W.from_reduced_word([Integer(0),Integer(2),Integer(1)])                                  # needs sage.combinat sage.groups
>>> w.affine_grassmannian_to_core()                                   # needs sage.combinat sage.groups
Traceback (most recent call last):
...
ValueError: this only works on type 'A' affine Grassmannian elements
affine_grassmannian_to_partition()[source]#

Bijection between affine Grassmannian elements of type \(A_k^{(1)}\) and \(k\)-bounded partitions.

INPUT:

  • self is affine Grassmannian element of the affine Weyl group of type \(A_k^{(1)}\) (i.e. all reduced words end in 0)

OUTPUT:

  • \(k\)-bounded partition

EXAMPLES:

sage: # needs sage.combinat sage.groups
sage: k = 2
sage: W = WeylGroup(['A', k, 1])
sage: w = W.from_reduced_word([0,2,1,0])
sage: la = w.affine_grassmannian_to_partition(); la
[2, 2]
sage: la.from_kbounded_to_grassmannian(k) == w
True
>>> from sage.all import *
>>> # needs sage.combinat sage.groups
>>> k = Integer(2)
>>> W = WeylGroup(['A', k, Integer(1)])
>>> w = W.from_reduced_word([Integer(0),Integer(2),Integer(1),Integer(0)])
>>> la = w.affine_grassmannian_to_partition(); la
[2, 2]
>>> la.from_kbounded_to_grassmannian(k) == w
True
is_affine_grassmannian()[source]#

Test whether self is affine Grassmannian.

An element of an affine Weyl group is affine Grassmannian if any of the following equivalent properties holds:

  • all reduced words for self end with 0.

  • self is the identity, or 0 is its single right descent.

  • self is a minimal coset representative for W / cl W.

EXAMPLES:

sage: # needs sage.combinat sage.groups
sage: W = WeylGroup(['A', 3, 1])
sage: w = W.from_reduced_word([2,1,0])
sage: w.is_affine_grassmannian()
True
sage: w = W.from_reduced_word([2,0])
sage: w.is_affine_grassmannian()
False
sage: W.one().is_affine_grassmannian()
True
>>> from sage.all import *
>>> # needs sage.combinat sage.groups
>>> W = WeylGroup(['A', Integer(3), Integer(1)])
>>> w = W.from_reduced_word([Integer(2),Integer(1),Integer(0)])
>>> w.is_affine_grassmannian()
True
>>> w = W.from_reduced_word([Integer(2),Integer(0)])
>>> w.is_affine_grassmannian()
False
>>> W.one().is_affine_grassmannian()
True
class ParentMethods[source]#

Bases: object

affine_grassmannian_elements_of_given_length(k)[source]#

Return the affine Grassmannian elements of length \(k\).

This is returned as a finite enumerated set.

EXAMPLES:

sage: W = WeylGroup(['A', 3, 1])                                        # needs sage.combinat sage.groups
sage: [x.reduced_word()                                                 # needs sage.combinat sage.groups
....:  for x in W.affine_grassmannian_elements_of_given_length(3)]
[[2, 1, 0], [3, 1, 0], [2, 3, 0]]
>>> from sage.all import *
>>> W = WeylGroup(['A', Integer(3), Integer(1)])                                        # needs sage.combinat sage.groups
>>> [x.reduced_word()                                                 # needs sage.combinat sage.groups
...  for x in W.affine_grassmannian_elements_of_given_length(Integer(3))]
[[2, 1, 0], [3, 1, 0], [2, 3, 0]]
special_node()[source]#

Return the distinguished special node of the underlying Dynkin diagram.

EXAMPLES:

sage: W = WeylGroup(['A', 3, 1])                                        # needs sage.combinat sage.groups
sage: W.special_node()                                                  # needs sage.combinat sage.groups
0
>>> from sage.all import *
>>> W = WeylGroup(['A', Integer(3), Integer(1)])                                        # needs sage.combinat sage.groups
>>> W.special_node()                                                  # needs sage.combinat sage.groups
0
additional_structure()[source]#

Return None.

Indeed, the category of affine Weyl groups defines no additional structure: affine Weyl groups are a special class of Weyl groups.

Todo

Should this category be a CategoryWithAxiom?

EXAMPLES:

sage: AffineWeylGroups().additional_structure()
>>> from sage.all import *
>>> AffineWeylGroups().additional_structure()
super_categories()[source]#

EXAMPLES:

sage: AffineWeylGroups().super_categories()
[Category of infinite Weyl groups]
>>> from sage.all import *
>>> AffineWeylGroups().super_categories()
[Category of infinite Weyl groups]