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`

.