I have revised both the Kazhdan-Lusztig polynomial and Iwahori 
Hecke algebra patches and reposted them on the trac server.

http://trac.sagemath.org/sage_trac/ticket/7729
http://trac.sagemath.org/sage_trac/ticket/7751

Things that should be in coxeter.py have been moved there,
cached methods are used when appropriate, and both patches
work with LaurentPolynomialRings. The patches seem to me
to be fairly mature and I hope someone will review them.

There are a couple of things that could be added. If
both patches are used, one may implement the Kazhdan-Lusztig
basis of the Iwahori Hecke algebra very easily. There is
a catch, which is that as Kazhdan and Lusztig described
these bases (there are actually two, denoted C and C')
one needs a square root of q. This can be avoided by
multiplying C_w by q^(-w.length()/2) which means that
it is not quite invariant by the involution. I did
not add this since it depends on both patches, but
these bases are quite important. One also wants the
Kazhdan-Lusztig involution but I did not put that in
either, though it is easy.

For affine Weyl groups, there is another thing which
can be implemented, which is the Bernstein-Zelevinsky
presentation. This involves two things, one easy and
one hard. The easy one is the subalgebra which is the
Iwahori Hecke algebra of the finite classical Weyl
group. The other, which is a little trickier is a map
from the coweight lattice into the affine Hecke
algebra. I have done some experiments with this but
just for type A2. If the coweight is the negative of
a dominant weight its image is a basis element,
but if it is not, it can be slow to compute.

Many things have to be done differently in the two
cases where the base ring is a field or a
LaurentPolynomialRing. At places I had to work around
the peculiarities of LaurentPolynomialRings. For
example, unlike polynomials they have no truncate
method. And here is a bug, I think:

sage: R.<q> = LaurentPolynomialRing(QQ)
sage: type(q)
<type 'sage.rings.polynomial.laurent_polynomial.LaurentPolynomial_mpair'>
sage: R(q)
q

So far so good, but the following raises an exception:

sage: type(q^(-1))
<type 'sage.rings.polynomial.laurent_polynomial.LaurentPolynomial_mpair'>
sage: R(q^(-1))

Dan

--

You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To post to this group, send email to sage-combinat-de...@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.


Reply via email to