# Revision history [back]

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(W1.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.

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(W1.gens())
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.