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.