dual of weyl group

I was wondering if it is possible to, given an element in a Weyl group, produce the corresponding element in the dual Weyl group. As an example, if w in W = RootSystem(['A', 3]).weight_lattice().weyl_group()

Then I would like a function f such that f(w) in RootSystem(['A', 3]).coroot_lattice().weyl_group(), with the obvious duality <w*x,y> = <x,f(w)*(y)>, where x in the weight lattice and y is in the coroot lattice.

thanks

edit retag close merge delete

Sort by » oldest newest most voted

Yes. In Sage, Weyl groups are constructed as matrix groups acting on the weight (or coweight) lattices. The Weyl groups in question are canonically isomorphic and what you want is an explicit isomorphism between them.

It's not terribly well documented, but there is a hom method for matrix groups that allows you to define a homomorphism by specifying the images of the generators of the domain.

The following code creates the canonical isomorphism phi between W1 the Weyl group acting on weights and W2 the Weyl group acting on coweights:

sage: W1 = RootSystem(['A', Integer(3)]).weight_lattice().weyl_group()
sage: W2 = RootSystem(['A', Integer(3)]).coweight_lattice().weyl_group()
sage: phi = W1.hom(W2.gens())
sage: phi
Homomorphism : Weyl Group of type ['A', 3] (as a matrix group acting on the weight
lattice) --> Weyl Group of type ['A', 3] (as a matrix group acting on the weight
lattice)

sage: (s1, s2, s3) = W1.gens()
sage: phi(s1*s2*s1)
[ 0 -1  0]
[-1  0  0]
[ 1  1  1]


The element phi(s1*s2*s1) will act on the coweight lattice the way you want. The line

phi = W1.hom(W2.gens())


defines a homomorphism (actually an isomorphism) by sending W1.gen(i) to W2.gen(i) for i = 0 ... 2.

more

Thanks for your response. Unfortunately the function I described, while it does map generators (i.e. simple reflections) to generators, is not a homomorphism! It acts as an adjoint operator.

( 2011-07-19 17:47:29 +0200 )edit