Kazhdan-Lusztig多项式

SAGE可以计算Weyl群或仿射Weyl群(以及潜在的其他Coxeter群)的普通Kazhdan-Lusztig多项式。

您必须创建Weyl群 W 和一个包含不确定数的环 q 。环可以是一元多项式环,也可以是一元洛朗多项式环。然后,您可以如下计算Kazhdan-Lusztig多项式:

sage: W = WeylGroup("A3", prefix="s")
sage: [s1,s2,s3] = W.simple_reflections()
sage: P.<q> = LaurentPolynomialRing(QQ)
sage: KL = KazhdanLusztigPolynomial(W,q)
sage: KL.R(s2, s2*s1*s3*s2)
-1 + 3*q - 3*q^2 + q^3
sage: KL.P(s2, s2*s1*s3*s2)
1 + q

这样我们就有了喀什丹-卢兹提格 RP 多项式。

已知的计算Kazhdan-Lusztig多项式的算法是高度递归的,并且需要缓存中间结果以使程序不会太慢。因此,中间结果被缓存。这样做的效果是,当您为任何给定的 KazhdanLusztigPolynomial 类的情况下,计算一开始会很慢,但随着计算的多项式越来越多,计算速度会逐渐加快。

您可以通过使用选项创建类来查看中间计算的结果 trace="true"

因为父母是 q 必须是一元环,如果你想处理其他不定数, first 创建一元多项式环或Laurent多项式环,并建立Kazhdan-Lusztig类。 Then 创建包含以下内容的环 q 以及其他变量::

sage: W = WeylGroup("B3", prefix="s")
sage: [s1,s2,s3] = W.simple_reflections()
sage: P.<q> = PolynomialRing(QQ)
sage: KL = KazhdanLusztigPolynomial(W,q)
sage: P1.<x,y> = PolynomialRing(P)
sage: x*KL.P(s1*s3,s1*s3*s2*s1*s3)
(q + 1)*x