Kazhdan-Lusztig Polynomials¶
AUTHORS:
Daniel Bump (2008): initial version
Alan J.X. Guo (2014-03-18):
R_tilde()
method.
- class sage.combinat.kazhdan_lusztig.KazhdanLusztigPolynomial(W, q, trace=False)[source]¶
Bases:
UniqueRepresentation
,SageObject
A Kazhdan-Lusztig polynomial.
INPUT:
W
– a Weyl Groupq
– an indeterminate
OPTIONAL:
trace
– ifTrue
, then this displays the trace: the intermediate results. This is instructive and fun.
The parent of
q
may be aPolynomialRing
or aLaurentPolynomialRing
.EXAMPLES:
sage: W = WeylGroup("B3",prefix='s') sage: [s1,s2,s3] = W.simple_reflections() sage: R.<q> = LaurentPolynomialRing(QQ) sage: KL = KazhdanLusztigPolynomial(W,q) sage: KL.P(s2,s3*s2*s3*s1*s2) 1 + q
>>> from sage.all import * >>> W = WeylGroup("B3",prefix='s') >>> [s1,s2,s3] = W.simple_reflections() >>> R = LaurentPolynomialRing(QQ, names=('q',)); (q,) = R._first_ngens(1) >>> KL = KazhdanLusztigPolynomial(W,q) >>> KL.P(s2,s3*s2*s3*s1*s2) 1 + q
A faster implementation (using the optional package Coxeter 3) is given by:
sage: W = CoxeterGroup(['B', 3], implementation='coxeter3') # optional - coxeter3 sage: W.kazhdan_lusztig_polynomial([2], [3,2,3,1,2]) # optional - coxeter3 q + 1
>>> from sage.all import * >>> W = CoxeterGroup(['B', Integer(3)], implementation='coxeter3') # optional - coxeter3 >>> W.kazhdan_lusztig_polynomial([Integer(2)], [Integer(3),Integer(2),Integer(3),Integer(1),Integer(2)]) # optional - coxeter3 q + 1
- P(x, y)[source]¶
Return the Kazhdan-Lusztig \(P\) polynomial.
If the rank is large, this runs slowly at first but speeds up as you do repeated calculations due to the caching.
INPUT:
x
,y
– elements of the underlying Coxeter group
See also
kazhdan_lusztig_polynomial
for a faster implementation using Fokko Ducloux’s Coxeter3 C++ library.EXAMPLES:
sage: R.<q> = QQ[] sage: W = WeylGroup("A3", prefix='s') sage: [s1,s2,s3] = W.simple_reflections() sage: KL = KazhdanLusztigPolynomial(W, q) sage: KL.P(s2,s2*s1*s3*s2) q + 1
>>> from sage.all import * >>> R = QQ['q']; (q,) = R._first_ngens(1) >>> W = WeylGroup("A3", prefix='s') >>> [s1,s2,s3] = W.simple_reflections() >>> KL = KazhdanLusztigPolynomial(W, q) >>> KL.P(s2,s2*s1*s3*s2) q + 1
- R(x, y)[source]¶
Return the Kazhdan-Lusztig \(R\) polynomial.
INPUT:
x
,y
– elements of the underlying Coxeter group
EXAMPLES:
sage: R.<q>=QQ[] sage: W = WeylGroup("A2", prefix='s') sage: [s1,s2]=W.simple_reflections() sage: KL = KazhdanLusztigPolynomial(W, q) sage: [KL.R(x,s2*s1) for x in [1,s1,s2,s1*s2]] [q^2 - 2*q + 1, q - 1, q - 1, 0]
>>> from sage.all import * >>> R = QQ['q']; (q,) = R._first_ngens(1) >>> W = WeylGroup("A2", prefix='s') >>> [s1,s2]=W.simple_reflections() >>> KL = KazhdanLusztigPolynomial(W, q) >>> [KL.R(x,s2*s1) for x in [Integer(1),s1,s2,s1*s2]] [q^2 - 2*q + 1, q - 1, q - 1, 0]
- R_tilde(x, y)[source]¶
Return the Kazhdan-Lusztig \(\tilde{R}\) polynomial.
Information about the \(\tilde{R}\) polynomials can be found in [Dy1993] and [BB2005].
INPUT:
x
,y
– elements of the underlying Coxeter group
EXAMPLES:
sage: R.<q> = QQ[] sage: W = WeylGroup("A2", prefix='s') sage: [s1,s2] = W.simple_reflections() sage: KL = KazhdanLusztigPolynomial(W, q) sage: [KL.R_tilde(x,s2*s1) for x in [1,s1,s2,s1*s2]] [q^2, q, q, 0]
>>> from sage.all import * >>> R = QQ['q']; (q,) = R._first_ngens(1) >>> W = WeylGroup("A2", prefix='s') >>> [s1,s2] = W.simple_reflections() >>> KL = KazhdanLusztigPolynomial(W, q) >>> [KL.R_tilde(x,s2*s1) for x in [Integer(1),s1,s2,s1*s2]] [q^2, q, q, 0]