Coxeter Group Algebras#

class sage.categories.coxeter_group_algebras.CoxeterGroupAlgebras(category, *args)[source]#

Bases: AlgebrasCategory

class ParentMethods[source]#

Bases: object

demazure_lusztig_eigenvectors(q1, q2)[source]#

Return the family of eigenvectors for the Cherednik operators.

INPUT:

  • self – a finite Coxeter group W

  • q1, q2 – two elements of the ground ring K

The affine Hecke algebra Hq1,q2(W~) acts on the group algebra of W through the Demazure-Lusztig operators Ti. Its Cherednik operators Yλ can be simultaneously diagonalized as long as q1/q2 is not a small root of unity [HST2008].

This method returns the family of joint eigenvectors, indexed by W.

EXAMPLES:

sage: W = WeylGroup(["B",2])
sage: W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
sage: K = QQ['q1,q2'].fraction_field()
sage: q1, q2 = K.gens()
sage: KW = W.algebra(K)
sage: E = KW.demazure_lusztig_eigenvectors(q1,q2)
sage: E.keys()                                                          # needs sage.rings.number_field
Weyl Group of type ['B', 2] (as a matrix group acting on the ambient space)
sage: w = W.an_element()
sage: E[w]                                                              # needs sage.rings.number_field
(q2/(-q1+q2))*2121 + ((-q2)/(-q1+q2))*121 - 212 + 12
W = WeylGroup(["B",2])
W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
K = QQ['q1,q2'].fraction_field()
q1, q2 = K.gens()
KW = W.algebra(K)
E = KW.demazure_lusztig_eigenvectors(q1,q2)
E.keys()                                                          # needs sage.rings.number_field
w = W.an_element()
E[w]                                                              # needs sage.rings.number_field
>>> from sage.all import *
>>> W = WeylGroup(["B",Integer(2)])
>>> W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
>>> K = QQ['q1,q2'].fraction_field()
>>> q1, q2 = K.gens()
>>> KW = W.algebra(K)
>>> E = KW.demazure_lusztig_eigenvectors(q1,q2)
>>> E.keys()                                                          # needs sage.rings.number_field
Weyl Group of type ['B', 2] (as a matrix group acting on the ambient space)
>>> w = W.an_element()
>>> E[w]                                                              # needs sage.rings.number_field
(q2/(-q1+q2))*2121 + ((-q2)/(-q1+q2))*121 - 212 + 12
demazure_lusztig_operator_on_basis(w, i, q1, q2, side='right')[source]#

Return the result of applying the i-th Demazure Lusztig operator on w.

INPUT:

  • w – an element of the Coxeter group

  • i – an element of the index set

  • q1, q2 – two elements of the ground ring

  • bar – a boolean (default False)

See demazure_lusztig_operators() for details.

EXAMPLES:

sage: W = WeylGroup(["B",3])
sage: W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
sage: K = QQ['q1,q2']
sage: q1, q2 = K.gens()
sage: KW = W.algebra(K)
sage: w = W.an_element()
sage: KW.demazure_lusztig_operator_on_basis(w, 0, q1, q2)
(-q2)*323123 + (q1+q2)*123
sage: KW.demazure_lusztig_operator_on_basis(w, 1, q1, q2)
q1*1231
sage: KW.demazure_lusztig_operator_on_basis(w, 2, q1, q2)
q1*1232
sage: KW.demazure_lusztig_operator_on_basis(w, 3, q1, q2)
(q1+q2)*123 + (-q2)*12
W = WeylGroup(["B",3])
W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
K = QQ['q1,q2']
q1, q2 = K.gens()
KW = W.algebra(K)
w = W.an_element()
KW.demazure_lusztig_operator_on_basis(w, 0, q1, q2)
KW.demazure_lusztig_operator_on_basis(w, 1, q1, q2)
KW.demazure_lusztig_operator_on_basis(w, 2, q1, q2)
KW.demazure_lusztig_operator_on_basis(w, 3, q1, q2)
>>> from sage.all import *
>>> W = WeylGroup(["B",Integer(3)])
>>> W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
>>> K = QQ['q1,q2']
>>> q1, q2 = K.gens()
>>> KW = W.algebra(K)
>>> w = W.an_element()
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(0), q1, q2)
(-q2)*323123 + (q1+q2)*123
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(1), q1, q2)
q1*1231
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(2), q1, q2)
q1*1232
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(3), q1, q2)
(q1+q2)*123 + (-q2)*12

At q1=1 and q2=0 we recover the action of the isobaric divided differences πi:

sage: KW.demazure_lusztig_operator_on_basis(w, 0, 1, 0)
123
sage: KW.demazure_lusztig_operator_on_basis(w, 1, 1, 0)
1231
sage: KW.demazure_lusztig_operator_on_basis(w, 2, 1, 0)
1232
sage: KW.demazure_lusztig_operator_on_basis(w, 3, 1, 0)
123
KW.demazure_lusztig_operator_on_basis(w, 0, 1, 0)
KW.demazure_lusztig_operator_on_basis(w, 1, 1, 0)
KW.demazure_lusztig_operator_on_basis(w, 2, 1, 0)
KW.demazure_lusztig_operator_on_basis(w, 3, 1, 0)
>>> from sage.all import *
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(0), Integer(1), Integer(0))
123
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(1), Integer(1), Integer(0))
1231
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(2), Integer(1), Integer(0))
1232
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(3), Integer(1), Integer(0))
123

At q1=1 and q2=1 we recover the action of the simple reflection si:

sage: KW.demazure_lusztig_operator_on_basis(w, 0, 1, -1)
323123
sage: KW.demazure_lusztig_operator_on_basis(w, 1, 1, -1)
1231
sage: KW.demazure_lusztig_operator_on_basis(w, 2, 1, -1)
1232
sage: KW.demazure_lusztig_operator_on_basis(w, 3, 1, -1)
12
KW.demazure_lusztig_operator_on_basis(w, 0, 1, -1)
KW.demazure_lusztig_operator_on_basis(w, 1, 1, -1)
KW.demazure_lusztig_operator_on_basis(w, 2, 1, -1)
KW.demazure_lusztig_operator_on_basis(w, 3, 1, -1)
>>> from sage.all import *
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(0), Integer(1), -Integer(1))
323123
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(1), Integer(1), -Integer(1))
1231
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(2), Integer(1), -Integer(1))
1232
>>> KW.demazure_lusztig_operator_on_basis(w, Integer(3), Integer(1), -Integer(1))
12
demazure_lusztig_operators(q1, q2, side='right', affine=True)[source]#

Return the Demazure Lusztig operators acting on self.

INPUT:

  • q1, q2 – two elements of the ground ring K

  • side"left" or "right" (default: "right"); which side to act upon

  • affine – a boolean (default: True)

The Demazure-Lusztig operator Ti is the linear map RR obtained by interpolating between the simple projection πi (see CoxeterGroups.ElementMethods.simple_projection()) and the simple reflection si so that Ti has eigenvalues q1 and q2:

(q1+q2)πiq2si.

The Demazure-Lusztig operators give the usual representation of the operators Ti of the q1,q2 Hecke algebra associated to the Coxeter group.

For a finite Coxeter group, and if affine=True, the Demazure-Lusztig operators T1,,Tn are completed by T0 to implement the level 0 action of the affine Hecke algebra.

EXAMPLES:

sage: W = WeylGroup(["B",3])
sage: W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
sage: K = QQ['q1,q2']
sage: q1, q2 = K.gens()
sage: KW = W.algebra(K)
sage: T = KW.demazure_lusztig_operators(q1, q2, affine=True)
sage: x = KW.monomial(W.an_element()); x
123
sage: T[0](x)
(-q2)*323123 + (q1+q2)*123
sage: T[1](x)
q1*1231
sage: T[2](x)
q1*1232
sage: T[3](x)
(q1+q2)*123 + (-q2)*12

sage: T._test_relations()
W = WeylGroup(["B",3])
W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
K = QQ['q1,q2']
q1, q2 = K.gens()
KW = W.algebra(K)
T = KW.demazure_lusztig_operators(q1, q2, affine=True)
x = KW.monomial(W.an_element()); x
T[0](x)
T[1](x)
T[2](x)
T[3](x)
T._test_relations()
>>> from sage.all import *
>>> W = WeylGroup(["B",Integer(3)])
>>> W.element_class._repr_=lambda x: "".join(str(i) for i in x.reduced_word())
>>> K = QQ['q1,q2']
>>> q1, q2 = K.gens()
>>> KW = W.algebra(K)
>>> T = KW.demazure_lusztig_operators(q1, q2, affine=True)
>>> x = KW.monomial(W.an_element()); x
123
>>> T[Integer(0)](x)
(-q2)*323123 + (q1+q2)*123
>>> T[Integer(1)](x)
q1*1231
>>> T[Integer(2)](x)
q1*1232
>>> T[Integer(3)](x)
(q1+q2)*123 + (-q2)*12

>>> T._test_relations()

Note

For a finite Weyl group W, the level 0 action of the affine Weyl group W~ only depends on the Coxeter diagram of the affinization, not its Dynkin diagram. Hence it is possible to explore all cases using only untwisted affinizations.