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 elementwt
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 elementof 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
-
-
class
sage.combinat.root_system.fundamental_group.
FundamentalGroupGL
(cartan_type, prefix='pi')¶ Bases:
sage.combinat.root_system.fundamental_group.FundamentalGroupOfExtendedAffineWeylGroup_Class
Fundamental group of
. It is just the integers with extra privileges.
-
Element
¶ alias of
FundamentalGroupGLElement
-
action
(i)¶ The action of the
-th automorphism on the affine Dynkin node set.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True) sage: F.action(4)(2) 0 sage: F.action(-4)(2) 1
-
an_element
()¶ An element of
self
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).an_element() pi[5]
-
dual_node
(i)¶ The node whose special automorphism is inverse to that of
.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True) sage: F.dual_node(2) -2
-
family
()¶ The family associated with the set of special nodes.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: fam = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).family() # indirect doctest sage: fam Lazy family (<lambda>(i))_{i in Integer Ring} sage: fam[-3] -3
-
group_generators
()¶ Return group generators for
self
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).group_generators() (pi[1],)
-
one
()¶ Return the identity element of the fundamental group.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).one() pi[0]
-
product
(x, y)¶ Return the product of
and
.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True) sage: F.special_nodes() Integer Ring sage: F(2)*F(3) pi[5] sage: F(1)*F(3)^(-1) pi[-2]
-
reduced_word
(i)¶ A reduced word for the finite permutation part of the special automorphism indexed by
.
More precisely, return a reduced word for the finite Weyl group element
where
-th automorphism (expressed in the extended affine Weyl group) has the form
where
is a translation element.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True) sage: F.reduced_word(10) (1, 2)
-
some_elements
()¶ Return some elements of
self
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).some_elements() [pi[-2], pi[2], pi[5]]
-
-
class
sage.combinat.root_system.fundamental_group.
FundamentalGroupGLElement
(parent, x)¶ Bases:
sage.combinat.root_system.fundamental_group.FundamentalGroupElement
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_classical_ambient
(wt)¶ Act by
self
on the classical ambient weight vectorwt
.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 affinizationprefix
(default: ‘pi’) – string that labels the elements of the groupgeneral_linear
– (default: None, meaning False) In untwisted type A, if True, use the universal central extension
Fundamental group
Associated to each affine Cartan type
is an extended affine Weyl group
. Its subgroup of length-zero elements is called the fundamental group
. The group
can be identified with a subgroup of the group of automorphisms of the affine Dynkin diagram. As such, every element of
can be viewed as a permutation of the set
of affine Dynkin nodes.
Let
be the distinguished affine node; it is the one whose removal produces the associated finite Cartan type (call it
). A node
is called special if some automorphism of the affine Dynkin diagram, sends
to
. The node
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
by
. The structure of
is determined as follows.
is untwisted –
is isomorphic to
where
and
are the coweight and coroot lattices of type
. The group
consists of the cosets
for special nodes
, where
by convention. In this case the special nodes
are the cominuscule nodes, the ones such that
is
or
for all
. For
special, addition by
permutes
and therefore permutes the set of special nodes. This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
is dual untwisted – (that is, the dual of
is untwisted)
is isomorphic to
where
and
are the weight and root lattices of type
. The group
consists of the cosets
for special nodes
, where
by convention. In this case the special nodes
are the minuscule nodes, the ones such that
is
or
for all
. For
special, addition by
permutes
and therefore permutes the set of special nodes. This permutation extends uniquely to an automorphism of the affine Dynkin diagram.
is mixed – (that is, not of the above two types)
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
. It is defined to be the group of integers, which is the covering group of the fundamental group Z/nZ for affine
:
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
-
class
sage.combinat.root_system.fundamental_group.
FundamentalGroupOfExtendedAffineWeylGroup_Class
(cartan_type, prefix, finite=True)¶ Bases:
sage.structure.unique_representation.UniqueRepresentation
,sage.structure.parent.Parent
The group of length zero elements in the extended affine Weyl group.
-
Element
¶ alias of
FundamentalGroupElement
-
action
(i)¶ Return a function which permutes the affine Dynkin node set by the
-th special automorphism.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]) sage: [[(i, j, F.action(i)(j)) for j in F.index_set()] for i in F.special_nodes()] [[(0, 0, 0), (0, 1, 1), (0, 2, 2)], [(1, 0, 1), (1, 1, 2), (1, 2, 0)], [(2, 0, 2), (2, 1, 0), (2, 2, 1)]] sage: G = FundamentalGroupOfExtendedAffineWeylGroup(['D',4,1]) sage: [[(i, j, G.action(i)(j)) for j in G.index_set()] for i in G.special_nodes()] [[(0, 0, 0), (0, 1, 1), (0, 2, 2), (0, 3, 3), (0, 4, 4)], [(1, 0, 1), (1, 1, 0), (1, 2, 2), (1, 3, 4), (1, 4, 3)], [(3, 0, 3), (3, 1, 4), (3, 2, 2), (3, 3, 0), (3, 4, 1)], [(4, 0, 4), (4, 1, 3), (4, 2, 2), (4, 3, 1), (4, 4, 0)]]
-
an_element
()¶ Return an element of
self
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1],prefix="f").an_element() f[4]
-
cartan_type
()¶ The Cartan type of
self
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]).cartan_type() ['A', 3, 1]
-
dual_node
(i)¶ Return the node that indexes the inverse of the
-th element.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',4,1]) sage: [(i, F.dual_node(i)) for i in F.special_nodes()] [(0, 0), (1, 4), (2, 3), (3, 2), (4, 1)] sage: G = FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1]) sage: [(i, G.dual_node(i)) for i in G.special_nodes()] [(0, 0), (1, 6), (6, 1)] sage: H = FundamentalGroupOfExtendedAffineWeylGroup(['D',5,1]) sage: [(i, H.dual_node(i)) for i in H.special_nodes()] [(0, 0), (1, 1), (4, 5), (5, 4)]
-
group_generators
()¶ Return a tuple of generators of the fundamental group.
Warning
This returns the entire group, a necessary behavior because it is used in
__iter__()
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['E',6,1],prefix="f").group_generators() Finite family {0: f[0], 1: f[1], 6: f[6]}
-
index_set
()¶ The node set of the affine Cartan type of
self
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]).index_set() (0, 1, 2)
-
one
()¶ Return the identity element of the fundamental group.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]) sage: F.one() pi[0]
-
product
(x, y)¶ Return the product of
and
.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]) sage: F.special_nodes() (0, 1, 2, 3) sage: F(2)*F(3) pi[1] sage: F(1)*F(3)^(-1) pi[2]
-
reduced_word
(i)¶ Return a reduced word for the finite Weyl group element associated with the
-th special automorphism.
More precisely, for each special node
,
self.reduced_word(i)
is a reduced word for the elementin the finite Weyl group such that in the extended affine Weyl group, the
-th special automorphism is equal to
where
is a translation element.
EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: F = FundamentalGroupOfExtendedAffineWeylGroup(['A',3,1]) sage: [(i, F.reduced_word(i)) for i in F.special_nodes()] [(0, ()), (1, (1, 2, 3)), (2, (2, 1, 3, 2)), (3, (3, 2, 1))]
-
special_nodes
()¶ Return the special nodes of
self
.See
sage.combinat.root_system.cartan_type.special_nodes()
.EXAMPLES:
sage: from sage.combinat.root_system.fundamental_group import FundamentalGroupOfExtendedAffineWeylGroup sage: FundamentalGroupOfExtendedAffineWeylGroup(['D',4,1]).special_nodes() (0, 1, 3, 4) sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1]).special_nodes() (0, 1, 2) sage: FundamentalGroupOfExtendedAffineWeylGroup(['C',3,1]).special_nodes() (0, 3) sage: FundamentalGroupOfExtendedAffineWeylGroup(['D',4,2]).special_nodes() (0, 3) sage: FundamentalGroupOfExtendedAffineWeylGroup(['A',2,1], general_linear=True).special_nodes() Integer Ring
-