Extended Affine Weyl Groups

AUTHORS:

  • Daniel Bump (2012): initial version
  • Daniel Orr (2012): initial version
  • Anne Schilling (2012): initial version
  • Mark Shimozono (2012): initial version
  • Nicolas M. Thiery (2012): initial version
  • Mark Shimozono (2013): twisted affine root systems, multiple realizations, GL_n
sage.combinat.root_system.extended_affine_weyl_group.ExtendedAffineWeylGroup(cartan_type, general_linear=None, **print_options)

The extended affine Weyl group.

INPUT:

  • cartan_type – An affine or finite Cartan type (a finite Cartan type is an abbreviation for its untwisted affinization)
  • general_linear – (default: None) If True and cartan_type indicates untwisted type A, returns the universal central extension
  • print_options – Special instructions for printing elements (see below)

Mnemonics

  • “P” – subgroup of translations
  • “Pv” – subgroup of translations in a dual form
  • “W0” – classical Weyl group
  • “W” – affine Weyl group
  • “F” – fundamental group of length zero elements

There are currently six realizations: “PW0”, “W0P, “WF”, “FW”, “PvW0”, and “W0Pv”.

“PW0” means the semidirect product of “P” with “W0” acting from the right. “W0P” is similar but with “W0” acting from the left. “WF” is the semidirect product of “W” with “F” acting from the right, etc.

Recognized arguments for print_options are:

  • print_tuple – True or False (default: False) If True, elements are printed \((a,b)\), otherwise as \(a * b\)
  • affine – Prefix for simple reflections in the affine Weyl group
  • classical – Prefix for simple reflections in the classical Weyl group
  • translation – Prefix for the translation elements
  • fundamental – Prefix for the elements of the fundamental group

These options are not mutable.

The extended affine Weyl group was introduced in the following references.

REFERENCES:

[Iwahori]Iwahori, Generalized Tits system (Bruhat decomposition) on p-adic semisimple groups. 1966 Algebraic Groups and Discontinuous Subgroups (AMS Proc. Symp. Pure Math.., 1965) pp. 71-83 Amer. Math. Soc., Providence, R.I.
[Bour]Bourbaki, Lie Groups and Lie Algebras IV.2

Notation

  • \(R\) – An irreducible affine root system
  • \(I\) – Set of nodes of the Dynkin diagram of \(R\)
  • \(R_0\) – The classical subsystem of \(R\)
  • \(I_0\) – Set of nodes of the Dynkin diagram of \(R_0\)
  • \(E\) – Extended affine Weyl group of type \(R\)
  • \(W\) – Affine Weyl group of type \(R\)
  • \(W_0\) – finite (classical) Weyl group (of type \(R_0\))
  • \(M\) – translation lattice for \(W\)
  • \(L\) – translation lattice for \(E\)
  • \(F\) – Fundamental subgroup of \(E\) (the length zero elements)
  • \(P\) – Finite weight lattice
  • \(Q\) – Finite root lattice
  • \(P^\vee\) – Finite coweight lattice
  • \(Q^\vee\) – Finite coroot lattice

Translation lattices

The styles “PW0” and “W0P” use the following lattices:

  • Untwisted affine: \(L = P^\vee\), \(M = Q^\vee\)
  • Dual of untwisted affine: \(L = P\), \(M = Q\)
  • \(BC_n\) (\(A_{2n}^{(2)}\)): \(L = M = P\)
  • Dual of \(BC_n\) (\(A_{2n}^{(2)\dagger}\)): \(L = M = P^\vee\)

The styles “PvW0” and “W0Pv” use the following lattices:

  • Untwisted affine: The weight lattice of the dual finite Cartan type.
  • Dual untwisted affine: The same as for “PW0” and “W0P”.

For mixed affine type (\(A_{2n}^{(2)}\), aka \(\tilde{BC}_n\), and their affine duals) the styles “PvW0” and “W0Pv” are not implemented.

Finite and affine Weyl groups \(W_0\) and \(W\)

The finite Weyl group \(W_0\) is generated by the simple reflections \(s_i\) for \(i \in I_0\) where \(s_i\) is the reflection across a suitable hyperplane \(H_i\) through the origin in the real span \(V\) of the lattice \(M\).

\(R\) specifies another (affine) hyperplane \(H_0\). The affine Weyl group \(W\) is generated by \(W_0\) and the reflection \(S_0\) across \(H_0\).

Extended affine Weyl group \(E\)

The complement in \(V\) of the set \(H\) of hyperplanes obtained from the \(H_i\) by the action of \(W\), has connected components called alcoves. \(W\) acts freely and transitively on the set of alcoves. After the choice of a certain alcove (the fundamental alcove), there is an induced bijection from \(W\) to the set of alcoves under which the identity in \(W\) maps to the fundamental alcove.

Then \(L\) is the largest sublattice of \(V\), whose translations stabilize the set of alcoves.

There are isomorphisms

\[\begin{split}\begin{aligned} W &\cong M \rtimes W_0 \cong W_0 \ltimes M \\ E &\cong L \rtimes W_0 \cong W_0 \ltimes L \end{aligned}\end{split}\]

Fundamental group of affine Dynkin automorphisms

Since \(L\) acts on the set of alcoves, the group \(F = L/M\) may be viewed as a subgroup of the symmetries of the fundamental alcove or equivalently the symmetries of the affine Dynkin diagram. \(F\) acts on the set of alcoves and hence on \(W\). Conjugation by an element of \(F\) acts on \(W\) by permuting the indices of simple reflections.

There are isomorphisms

\[E \cong F \ltimes W \cong W \rtimes F\]

An affine Dynkin node is special if it is conjugate to the zero node under some affine Dynkin automorphism.

There is a bijection \(i\) \(\mapsto\) \(\pi_i\) from the set of special nodes to the group \(F\), where \(\pi_i\) is the unique element of \(F\) that sends \(0\) to \(i\). When \(L=P\) (resp. \(L=P^\vee\)) the element \(\pi_i\) is induced (under the isomorphism \(F \cong L/M\)) by addition of the coset of the \(i\)-th fundamental weight (resp. coweight).

The length function of the Coxeter group \(W\) may be extended to \(E\) by \(\ell(w \pi) = \ell(w)\) where \(w \in W\) and \(\pi\in F\). This is the number of hyperplanes in \(H\) separating the fundamental alcove from its image by \(w \pi\) (or equivalently \(w\)).

It is known that if \(G\) is the compact Lie group of adjoint type with root system \(R_0\) then \(F\) is isomorphic to the fundamental group of \(G\), or to the center of its simply-connected covering group. That is why we call \(F\) the fundamental group.

In the future we may want to build an element of the group from an appropriate linear map f on some of the root lattice realizations for this Cartan type: W.from_endomorphism(f).

EXAMPLES:

sage: E = ExtendedAffineWeylGroup(["A",2,1]); E
Extended affine Weyl group of type ['A', 2, 1]
sage: type(E)
<class 'sage.combinat.root_system.extended_affine_weyl_group.ExtendedAffineWeylGroup_Class_with_category'>

sage: PW0=E.PW0(); PW0
Extended affine Weyl group of type ['A', 2, 1] realized by Semidirect product of Multiplicative form of Coweight lattice of the Root system of type ['A', 2] acted upon by Weyl Group of type ['A', 2] (as a matrix group acting on the coweight lattice)

sage: W0P = E.W0P(); W0P
Extended affine Weyl group of type ['A', 2, 1] realized by Semidirect product of Weyl Group of type ['A', 2] (as a matrix group acting on the coweight lattice) acting on Multiplicative form of Coweight lattice of the Root system of type ['A', 2]

sage: PvW0 = E.PvW0(); PvW0
Extended affine Weyl group of type ['A', 2, 1] realized by Semidirect product of Multiplicative form of Weight lattice of the Root system of type ['A', 2] acted upon by Weyl Group of type ['A', 2] (as a matrix group acting on the weight lattice)

sage: W0Pv = E.W0Pv(); W0Pv
Extended affine Weyl group of type ['A', 2, 1] realized by Semidirect product of Weyl Group of type ['A', 2] (as a matrix group acting on the weight lattice) acting on Multiplicative form of Weight lattice of the Root system of type ['A', 2]

sage: WF = E.WF(); WF
Extended affine Weyl group of type ['A', 2, 1] realized by Semidirect product of Weyl Group of type ['A', 2, 1] (as a matrix group acting on the root lattice) acted upon by Fundamental group of type ['A', 2, 1]

sage: FW = E.FW(); FW
Extended affine Weyl group of type ['A', 2, 1] realized by Semidirect product of Fundamental group of type ['A', 2, 1] acting on Weyl Group of type ['A', 2, 1] (as a matrix group acting on the root lattice)

When the realizations are constructed from each other as above, there are built-in coercions between them.

sage: F = E.fundamental_group()
sage: x = WF.from_reduced_word([0,1,2]) * WF(F(2)); x
S0*S1*S2 * pi[2]
sage: FW(x)
pi[2] * S1*S2*S0
sage: W0P(x)
s1*s2*s1 * t[-2*Lambdacheck[1] - Lambdacheck[2]]
sage: PW0(x)
t[Lambdacheck[1] + 2*Lambdacheck[2]] * s1*s2*s1
sage: PvW0(x)
t[Lambda[1] + 2*Lambda[2]] * s1*s2*s1

The translation lattice and its distinguished basis are obtained from E:

sage: L = E.lattice(); L
Coweight lattice of the Root system of type ['A', 2]
sage: b = E.lattice_basis(); b
Finite family {1: Lambdacheck[1], 2: Lambdacheck[2]}

Translation lattice elements can be coerced into any realization:

sage: PW0(b[1]-b[2])
t[Lambdacheck[1] - Lambdacheck[2]]
sage: FW(b[1]-b[2])
pi[2] * S0*S1

The dual form of the translation lattice and its basis are similarly obtained:

sage: Lv = E.dual_lattice(); Lv
Weight lattice of the Root system of type ['A', 2]
sage: bv = E.dual_lattice_basis(); bv
Finite family {1: Lambda[1], 2: Lambda[2]}
sage: FW(bv[1]-bv[2])
pi[2] * S0*S1

The abstract fundamental group is accessed from E:

sage: F = E.fundamental_group(); F
Fundamental group of type ['A', 2, 1]

Its elements are indexed by the set of special nodes of the affine Dynkin diagram:

sage: E.cartan_type().special_nodes()
(0, 1, 2)
sage: F.special_nodes()
(0, 1, 2)
sage: [F(i) for i in F.special_nodes()]
[pi[0], pi[1], pi[2]]

There is a coercion from the fundamental group into each realization:

sage: F(2)
pi[2]
sage: WF(F(2))
pi[2]
sage: W0P(F(2))
s2*s1 * t[-Lambdacheck[1]]
sage: W0Pv(F(2))
s2*s1 * t[-Lambda[1]]

Using E one may access the classical and affine Weyl groups and their morphisms into each realization:

sage: W0 = E.classical_weyl(); W0
Weyl Group of type ['A', 2] (as a matrix group acting on the coweight lattice)
sage: v = W0.from_reduced_word([1,2,1]); v
s1*s2*s1
sage: PW0(v)
s1*s2*s1
sage: WF(v)
S1*S2*S1
sage: W = E.affine_weyl(); W
Weyl Group of type ['A', 2, 1] (as a matrix group acting on the root lattice)
sage: w = W.from_reduced_word([2,1,0]); w
S2*S1*S0
sage: WF(w)
S2*S1*S0
sage: PW0(w)
t[Lambdacheck[1] - 2*Lambdacheck[2]] * s1

Note that for untwisted affine type, the dual form of the classical Weyl group is isomorphic to the usual one, but acts on a different lattice and is therefore different to sage:

sage: W0v = E.dual_classical_weyl(); W0v
Weyl Group of type ['A', 2] (as a matrix group acting on the weight lattice)
sage: v = W0v.from_reduced_word([1,2])
sage: x = PvW0(v); x
s1*s2
sage: y = PW0(v); y
s1*s2
sage: x.parent() == y.parent()
False

However, because there is a coercion from PvW0 to PW0, the elements x and y compare as equal:

sage: x == y
True

An element can be created directly from a reduced word:

sage: PW0.from_reduced_word([2,1,0])
t[Lambdacheck[1] - 2*Lambdacheck[2]] * s1

Here is a demonstration of the printing options:

sage: E = ExtendedAffineWeylGroup(["A",2,1], affine="sx", classical="Sx",translation="x",fundamental="pix")
sage: PW0 = E.PW0()
sage: y = PW0(E.lattice_basis()[1])
sage: y
x[Lambdacheck[1]]
sage: FW = E.FW()
sage: FW(y)
pix[1] * sx2*sx1
sage: PW0.an_element()
x[2*Lambdacheck[1] + 2*Lambdacheck[2]] * Sx1*Sx2

Todo

  • Implement a “slow” action of \(E\) on any affine root or weight lattice realization.
  • Implement the level \(m\) actions of \(E\) and \(W\) on the lattices of finite type.
  • Implement the relevant methods from the usual affine Weyl group
  • Implementation by matrices: style “M”.
  • Use case: implement the Hecke algebra on top of this

The semidirect product construction in sage currently only admits multiplicative groups. Therefore for the styles involving “P” and “Pv”, one must convert the additive group of translations \(L\) into a multiplicative group by applying the sage.groups.group_exp.GroupExp functor.

The general linear case

The general linear group is not semisimple. Sage can build its extended affine Weyl group:

sage: E = ExtendedAffineWeylGroup(['A',2,1], general_linear=True); E
Extended affine Weyl group of GL(3)

If the Cartan type is ['A', n-1, 1] and the parameter general_linear is not True, the extended affine Weyl group that is built will be for \(SL_n\), not \(GL_n\). But if general_linear is True, let \(W_a\) and \(W_e\) be the affine and extended affine Weyl groups. We make the following nonstandard definition: the extended affine Weyl group \(W_e(GL_n)\) is defined by

\[W_e(GL_n) = P(GL_n) \rtimes W\]

where \(W\) is the finite Weyl group (the symmetric group \(S_n\)) and \(P(GL_n)\) is the weight lattice of \(GL_n\), which is usually identified with the lattice \(\ZZ^n\) of \(n\)-tuples of integers:

sage: PW0 = E.PW0(); PW0
Extended affine Weyl group of GL(3) realized by Semidirect product of Multiplicative form of Ambient space of the Root system of type ['A', 2] acted upon by Weyl Group of type ['A', 2] (as a matrix group acting on the ambient space)
sage: PW0.an_element()
t[(2, 2, 3)] * s1*s2

There is an isomorphism

\[W_e(GL_n) = \ZZ \ltimes W_a\]

where the group of integers \(\ZZ\) (with generator \(\pi\)) acts on \(W_a\) by

\[\pi\, s_i\, \pi^{-1} = s_{i+1}\]

and the indices of the simple reflections are taken modulo \(n\):

sage: FW = E.FW(); FW
Extended affine Weyl group of GL(3) realized by Semidirect product of Fundamental group of GL(3) acting on Weyl Group of type ['A', 2, 1] (as a matrix group acting on the root lattice)
sage: FW.an_element()
pi[5] * S0*S1*S2

We regard \(\ZZ\) as the fundamental group of affine type \(GL_n\):

sage: F = E.fundamental_group(); F
Fundamental group of GL(3)
sage: F.special_nodes()
Integer Ring

sage: x = FW.from_fundamental(F(10)); x
pi[10]
sage: x*x
pi[20]
sage: E.PvW0()(x*x)
t[(7, 7, 6)] * s2*s1
sage.combinat.root_system.extended_affine_weyl_group.ExtendedAffineWeylGroup_Class

The parent-with-realization class of an extended affine Weyl group.