Fundamental Group of an Extended Affine Weyl Group

AUTHORS:

  • Mark Shimozono (2013) initial version
class sage.combinat.root_system.fundamental_group.FundamentalGroupElement(parent, x)

Bases: sage.structure.element.MultiplicativeGroupElement

This should not be called directly

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: x = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix="f").an_element()
sage: TestSuite(x).run()
act_on_affine_lattice(wt)

Act by self on the element wt of an affine root/weight lattice realization.

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
sage: wt = RootSystem(F.cartan_type()).weight_lattice().an_element(); wt
2*Lambda[0] + 2*Lambda[1] + 3*Lambda[2]
sage: F(3).act_on_affine_lattice(wt)
2*Lambda[0] + 3*Lambda[1] + 2*Lambda[3]

Warning

Doesn’t work on ambient spaces.

act_on_affine_weyl(w)

Act by self on the element \(w\) of the affine Weyl group.

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
sage: W = WeylGroup(F.cartan_type(),prefix="s")
sage: w = W.from_reduced_word([2,3,0])
sage: F(1).act_on_affine_weyl(w).reduced_word()
[3, 0, 1]
inverse()

Return the inverse element of self.

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1])
sage: F(1).inverse()
pi[3]
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1], prefix="f")
sage: F(1).inverse()
f[6]
value()

Return the special node which indexes the special automorphism self.

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1], prefix="f")
sage: F.special_nodes()
(0, 1, 2, 3, 4)
sage: x = F(4); x
f[4]
sage: x.value()
4
sage.combinat.root_system.fundamental_group.FundamentalGroupGL

Fundamental group of \(GL_n\). It is just the integers with extra privileges.

class sage.combinat.root_system.fundamental_group.FundamentalGroupGLElement(parent, x)

Bases: sage.combinat.root_system.fundamental_group.FundamentalGroupElement

act_on_classical_ambient(wt)

Act by self on the classical ambient weight vector wt.

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True)
sage: f = F.an_element(); f
pi[5]
sage: la = F.cartan_type().classical().root_system().ambient_space().an_element(); la
(2, 2, 3)
sage: f.act_on_classical_ambient(la)
(2, 3, 2)
sage.combinat.root_system.fundamental_group.FundamentalGroupOfExtendedAffineWeylGroup(cartan_type, prefix='pi', general_linear=None)

Factory for the fundamental group of an extended affine Weyl group.

INPUT:

  • cartan_type – a Cartan type that is either affine or finite, with the latter being a shorthand for the untwisted affinization
  • prefix (default: ‘pi’) – string that labels the elements of the group
  • general_linear – (default: None, meaning False) In untwisted type A, if True, use the universal central extension

Fundamental group

Associated to each affine Cartan type \(\tilde{X}\) is an extended affine Weyl group \(E\). Its subgroup of length-zero elements is called the fundamental group \(F\). The group \(F\) can be identified with a subgroup of the group of automorphisms of the affine Dynkin diagram. As such, every element of \(F\) can be viewed as a permutation of the set \(I\) of affine Dynkin nodes.

Let \(0 \in I\) be the distinguished affine node; it is the one whose removal produces the associated finite Cartan type (call it \(X\)). A node \(i \in I\) is called special if some automorphism of the affine Dynkin diagram, sends \(0\) to \(i\). The node \(0\) is always special due to the identity automorphism. There is a bijection of the set of special nodes with the fundamental group. We denote the image of \(i\) by \(\pi_i\). The structure of \(F\) is determined as follows.

  • \(\tilde{X}\) is untwisted – \(F\) is isomorphic to \(P^\vee/Q^\vee\) where \(P^\vee\) and \(Q^\vee\) are the coweight and coroot lattices of type \(X\). The group \(P^\vee/Q^\vee\) consists of the cosets \(\omega_i^\vee + Q^\vee\) for special nodes \(i\), where \(\omega_0^\vee = 0\) by convention. In this case the special nodes \(i\) are the cominuscule nodes, the ones such that \(\omega_i^\vee(\alpha_j)\) is \(0\) or \(1\) for all \(j\in I_0 = I \setminus \{0\}\). For \(i\) special, addition by \(\omega_i^\vee+Q^\vee\) permutes \(P^\vee/Q^\vee\) and therefore permutes the set of special nodes. This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
  • \(\tilde{X}\) is dual untwisted – (that is, the dual of \(\tilde{X}\) is untwisted) \(F\) is isomorphic to \(P/Q\) where \(P\) and \(Q\) are the weight and root lattices of type \(X\). The group \(P/Q\) consists of the cosets \(\omega_i + Q\) for special nodes \(i\), where \(\omega_0 = 0\) by convention. In this case the special nodes \(i\) are the minuscule nodes, the ones such that \(\alpha_j^\vee(\omega_i)\) is \(0\) or \(1\) for all \(j \in I_0\). For \(i\) special, addition by \(\omega_i+Q\) permutes \(P/Q\) and therefore permutes the set of special nodes. This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
  • \(\tilde{X}\) is mixed – (that is, not of the above two types) \(F\) is the trivial group.

EXAMPLES:

sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup
sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]); F
Fundamental group of type ['A', 3, 1]
sage: F.cartan_type().dynkin_diagram()
0
O-------+
|       |
|       |
O---O---O
1   2   3
A3~
sage: F.special_nodes()
(0, 1, 2, 3)
sage: F(1)^2
pi[2]
sage: F(1)*F(2)
pi[3]
sage: F(3)^(-1)
pi[1]

sage: F = FundamentalGroupOfExtendedAffineWeylGroup("B3"); F
Fundamental group of type ['B', 3, 1]
sage: F.cartan_type().dynkin_diagram()
    O 0
    |
    |
O---O=>=O
1   2   3
B3~
sage: F.special_nodes()
(0, 1)

sage: F = FundamentalGroupOfExtendedAffineWeylGroup("C2"); F
Fundamental group of type ['C', 2, 1]
sage: F.cartan_type().dynkin_diagram()
O=>=O=<=O
0   1   2
C2~
sage: F.special_nodes()
(0, 2)

sage: F = FundamentalGroupOfExtendedAffineWeylGroup("D4"); F
Fundamental group of type ['D', 4, 1]
sage: F.cartan_type().dynkin_diagram()
    O 4
    |
    |
O---O---O
1   |2  3
    |
    O 0
D4~
sage: F.special_nodes()
(0, 1, 3, 4)
sage: (F(4), F(4)^2)
(pi[4], pi[0])

sage: F = FundamentalGroupOfExtendedAffineWeylGroup("D5"); F
Fundamental group of type ['D', 5, 1]
sage: F.cartan_type().dynkin_diagram()
  0 O   O 5
    |   |
    |   |
O---O---O---O
1   2   3   4
D5~
sage: F.special_nodes()
(0, 1, 4, 5)
sage: (F(5), F(5)^2, F(5)^3, F(5)^4)
(pi[5], pi[1], pi[4], pi[0])
sage: F = FundamentalGroupOfExtendedAffineWeylGroup("E6"); F
Fundamental group of type ['E', 6, 1]
sage: F.cartan_type().dynkin_diagram()
        O 0
        |
        |
        O 2
        |
        |
O---O---O---O---O
1   3   4   5   6
E6~
sage: F.special_nodes()
(0, 1, 6)
sage: F(1)^2
pi[6]

sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['D',4,2]); F
Fundamental group of type ['C', 3, 1]^*
sage: F.cartan_type().dynkin_diagram()
O=<=O---O=>=O
0   1   2   3
C3~*
sage: F.special_nodes()
(0, 3)

We also implement a fundamental group for \(GL_n\). It is defined to be the group of integers, which is the covering group of the fundamental group Z/nZ for affine \(SL_n\):

sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True); F
Fundamental group of GL(3)
sage: x = F.an_element(); x
pi[5]
sage: x*x
pi[10]
sage: x.inverse()
pi[-5]
sage: wt = F.cartan_type().classical().root_system().ambient_space().an_element(); wt
(2, 2, 3)
sage: x.act_on_classical_ambient(wt)
(2, 3, 2)
sage: w = WeylGroup(F.cartan_type(),prefix="s").an_element(); w
s0*s1*s2
sage: x.act_on_affine_weyl(w)
s2*s0*s1
sage.combinat.root_system.fundamental_group.FundamentalGroupOfExtendedAffineWeylGroup_Class

The group of length zero elements in the extended affine Weyl group.