Kazhdan-Lusztig多项式

Sage可以计算Weyl群或仿射Weyl群(可能还有其他Coxeter群)的普通Kazhdan-Lusztig多项式。

你必须创建一个Weyl组 W 以及一个包含不确定的环 q . 环可以是一元多项式环或一元Laurent多项式环。然后你可以计算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 必须是一个单变量环,如果你想和其他索引器一起工作, 第一 创建一个一元多项式或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