Hi Dan!

On Tue, Dec 22, 2009 at 02:54:08PM -0800, Daniel Bump wrote:
> I was unable to get a working combinat queue. With sage-4.3.alpha1
> I get errors in trac_7420-fix-infinite-coercion-discovery-loop.patch.

Oops. Hopeful the guards are fixed now.

> I did however make a trac ticket:
> 
> http://trac.sagemath.org/sage_trac/attachment/ticket/7751/
> 
> There are quite a few changes from yesterday. I took your advice and
> made a class for Kazhdan Lusztig polynomials, with methods for the
> R and P polynomials. I also added a trace feature, so that you
> can follow the function calls. Try
> 
> sage: R.<q>=QQ[]
> sage: W = WeylGroup("F4", prefix = "s")
> sage: [s1,s2,s3,s4]=W.simple_reflections()
> sage: KL = KazhdanLusztigPolynomial(W,q,trace=true)
> sage: KL.P(s4,s1*s2*s3*s4*s3*s2)

What about using verbose?

I don't know if this is usable right now, though.  That's typically
one place where we might need fine grained verbosity, as discussed
last October on sage-devel.

> If you omit the cache=true, it takes 50 seconds to compute this
> polynomial. (However coxeter3 gives it instantly.) But speed is
> much better than yesterday. I found a good speedup by caching
> reduced words for Weyl group elements. I think it's 3 or 4
> times faster now.

Could you give it a shot at caching first_descent instead? It should
take less memory, and I expect the overhead of computing the reduced
word from first_descent to be largely compensated by the extra gains
coming from all the other spots where first_descent is used (with
Bruhat order calculations in the first place).

> At the moment I don't have it working for anything but
> finite Weyl groups.
> 
> I added a method to produce the reflections of the Weyl group.
> This is implemented for finite Weyl groups only. The reflections
> (i.e. conjugates of the simple reflections) are in bijection
> witht he positive roots, and sometimes you want to know the
> corresponding elements, so this returns a dictionary:
> 
> sage: W = WeylGroup("A3", prefix = "s")
> sage: W.reflections()
> 
> {s1*s2*s3*s2*s1: (1, 0, 0, -1),
>  s1*s2*s1: (1, 0, -1, 0),
>  s1: (1, -1, 0, 0),
>  s2*s3*s2: (0, 1, 0, -1),
>  s2: (0, 1, -1, 0),
>  s3: (0, 0, 1, -1)}

Very good. This was a long desired feature. You may want to use the
method self.from_morphism as is done in simple_reflections:

   ... self.from_morphism(self.lattice().simple_reflection(i)) ...

> I added a method to produce the Bruhat graph. This is a
> graph structure on the Bruhat interval {t | u <= t <= v}
> in which x and y are adjacent if x y^(-1) is a reflection.
> (Introduced I think by Carrell and Peterson but inspired by
> Deodhar.) So you can:
> 
> sage: W = WeylGroup("A3",prefix="s")
> sage: [s1,s2,s3] = W.simple_reflections()
> sage: W.bruhat_graph(s1*s3,s2*s1*s2*s3*s2).plot()
> sage: W.bruhat_graph(s1*s3,s2*s1*s2*s3*s2*s1).plot()

Ok.

> > > (1) The algorithms should be moved to coxeter_groups.py.
> > > They are applicable to arbitrary coxeter groups.
> > > I put them in weyl_groups.py because I'm more familiar
> > > with that file and wanted to get a fast prototype.
> > 
> > Ok. I can't promise to work on this shortly, so I'd suggest you give
> > it a shot yourself. It's mostly a question of putting the methods for
> > the parent in ParentMethods, and the methods for the elements in
> > ElementMethods in the CoxeterGroups class (leaving for the moment the
> > option handling to the constructor of WeylGroup).
> 
> I will try to do this but it may not be until after Christmas.

Sure!

Merry Christmas!
                                Nicolas
--
Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net>
http://Nicolas.Thiery.name/

--

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