ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Tue, 19 Jul 2011 17:47:29 +0200dual of weyl grouphttps://ask.sagemath.org/question/8217/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.
thanksSat, 09 Jul 2011 18:29:38 +0200https://ask.sagemath.org/question/8217/dual-of-weyl-group/Answer by benjaminfjones for <p>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
<code>w</code> in <code>W = RootSystem(['A', 3]).weight_lattice().weyl_group()</code></p>
<p>Then I would like a function f such that
<code>f(w)</code> in <code>RootSystem(['A', 3]).coroot_lattice().weyl_group()</code>,
with the obvious duality
<code><w*x,y> = <x,f(w)*(y)></code>,
where x in the weight lattice and y is in the coroot lattice.</p>
<p>thanks</p>
https://ask.sagemath.org/question/8217/dual-of-weyl-group/?answer=12505#post-id-12505Yes. 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](http://www.sagemath.org/doc/reference/sage/groups/matrix_gps/matrix_group_morphism.html), 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`.
Sun, 10 Jul 2011 14:29:01 +0200https://ask.sagemath.org/question/8217/dual-of-weyl-group/?answer=12505#post-id-12505Comment by markblunk for <p>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. </p>
<p>It's not terribly well <a href="http://www.sagemath.org/doc/reference/sage/groups/matrix_gps/matrix_group_morphism.html">documented</a>, but there is a <code>hom</code> method for matrix groups that allows you to define a homomorphism by specifying the images of the generators of the domain. </p>
<p>The following code creates the canonical isomorphism <code>phi</code> between <code>W1</code> the Weyl group acting on weights and <code>W2</code> the Weyl group acting on coweights:</p>
<pre><code>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]
</code></pre>
<p>The element <code>phi(s1*s2*s1)</code> will act on the coweight lattice the way you want. The line </p>
<pre><code>phi = W1.hom(W2.gens())
</code></pre>
<p>defines a homomorphism (actually an isomorphism) by sending <code>W1.gen(i)</code> to <code>W2.gen(i)</code> for <code>i = 0 ... 2</code>.</p>
https://ask.sagemath.org/question/8217/dual-of-weyl-group/?comment=21462#post-id-21462Thanks 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.Tue, 19 Jul 2011 17:47:29 +0200https://ask.sagemath.org/question/8217/dual-of-weyl-group/?comment=21462#post-id-21462