A Kleber tree is a tree of weights generated by Kleber’s algorithm [Kleber1]. The nodes correspond to the weights in the positive Weyl chamber obtained by subtracting a (non-zero) positive root. The edges are labeled by the coefficients of the roots of the difference.
AUTHORS:
REFERENCES:
[Kleber1] (1, 2) Michael Kleber. Combinatorial structure of finite dimensional representations of Yangians: the simply-laced case. Internat. Math. Res. Notices 1997. no. 4. 187-201.
[Kleber2] Michael Kleber. Finite dimensional representations of quantum affine algebras. Ph.D. dissertation at University of California Berkeley. 1998. math.QA/9809087.
Todo
Output the tree as a graph using the graph code
EXAMPLES:
sage: KleberTree(['A', 3], [[3,2], [2,1], [1,1], [1,1]])
Kleber tree of Cartan type ['A', 3] and root weight [2, 1, 2]
sage: KleberTree(['D', 4], [[2,2]])
Kleber tree of Cartan type ['D', 4] and root weight [0, 2, 0, 0]
TESTS:
sage: KT = KleberTree(['A', 3], [[3,2], [2,1], [1,1], [1,1]])
sage: for x in set(KT.list()): x
...
Kleber tree node with weight [1, 0, 3] and upwards edge root [1, 1, 0]
Kleber tree node with weight [0, 2, 2] and upwards edge root [1, 0, 0]
Kleber tree node with weight [2, 1, 2] and upwards edge root [0, 0, 0]
Kleber tree node with weight [2, 0, 0] and upwards edge root [0, 1, 1]
Kleber tree node with weight [0, 0, 2] and upwards edge root [1, 1, 0]
Kleber tree node with weight [0, 1, 0] and upwards edge root [0, 0, 1]
Kleber tree node with weight [3, 0, 1] and upwards edge root [0, 1, 1]
Kleber tree node with weight [0, 1, 0] and upwards edge root [1, 1, 1]
Kleber tree node with weight [1, 1, 1] and upwards edge root [1, 1, 1]
Kleber tree node with weight [0, 0, 2] and upwards edge root [2, 2, 1]
sage: KT = KleberTree(['A', 7], [[3,2], [2,1], [1,1]])
sage: KT
Kleber tree of Cartan type ['A', 7] and root weight [1, 1, 2, 0, 0, 0, 0]
sage: for x in set(KT.list()): x
...
Kleber tree node with weight [1, 0, 1, 0, 1, 0, 0] and upwards edge root [1, 2, 2, 1, 0, 0, 0]
Kleber tree node with weight [0, 0, 1, 0, 0, 1, 0] and upwards edge root [2, 3, 3, 2, 1, 0, 0]
Kleber tree node with weight [1, 1, 2, 0, 0, 0, 0] and upwards edge root [0, 0, 0, 0, 0, 0, 0]
Kleber tree node with weight [2, 0, 1, 1, 0, 0, 0] and upwards edge root [0, 1, 1, 0, 0, 0, 0]
Kleber tree node with weight [1, 0, 0, 2, 0, 0, 0] and upwards edge root [0, 1, 1, 0, 0, 0, 0]
Kleber tree node with weight [0, 0, 3, 0, 0, 0, 0] and upwards edge root [1, 1, 0, 0, 0, 0, 0]
Kleber tree node with weight [0, 0, 0, 1, 1, 0, 0] and upwards edge root [1, 1, 1, 0, 0, 0, 0]
Kleber tree node with weight [0, 1, 1, 1, 0, 0, 0] and upwards edge root [1, 1, 1, 0, 0, 0, 0]
Bases: sage.structure.parent.Parent, sage.structure.unique_representation.UniqueRepresentation
The tree that is generated by Kleber’s algorithm.
A Kleber tree is a tree of weights generated by Kleber’s algorithm
[Kleber1]. It is used to generate the set of all admissible rigged
configurations for the simply-laced types ,
,
,
,
and
.
The nodes correspond to the weights in the positive Weyl chamber obtained
by subtracting a (non-zero) positive root. The edges are labeled by the
coefficients of the roots, and is a child of
if
is the root
else if the edge label of
to its parent
is greater (in every
component) than the label from
to
.
For a Kleber tree, one needs to specify a Cartan type and a sequence of
tuples , where
is any positive integer and
is a node in
the Dynkin diagram. Each
can be viewed as a rectangle of width
and height
.
EXAMPLES:
sage: KT = KleberTree(['E', 6], [[4, 2]]) # long time (9s on sage.math, 2012)
sage: KT.cardinality() # long time
12
sage: KT = KleberTree(['A', 3], [[3,2], [1,1]]) # long time
sage: KT.list() # long time
[Kleber tree node with weight [1, 0, 2] and upwards edge root [0, 0, 0],
Kleber tree node with weight [0, 0, 1] and upwards edge root [1, 1, 1]]
alias of KleberTreeNode
Iterate over all nodes in the tree following a breadth-first traversal.
EXAMPLES:
sage: KT = KleberTree(['A', 3], [[2, 2], [2, 3]])
sage: for x in KT.breadth_first_iter(): x
...
Kleber tree node with weight [0, 5, 0] and upwards edge root [0, 0, 0]
Kleber tree node with weight [1, 3, 1] and upwards edge root [0, 1, 0]
Kleber tree node with weight [0, 3, 0] and upwards edge root [1, 2, 1]
Kleber tree node with weight [2, 1, 2] and upwards edge root [0, 1, 0]
Kleber tree node with weight [1, 1, 1] and upwards edge root [0, 1, 0]
Kleber tree node with weight [0, 1, 0] and upwards edge root [1, 2, 1]
Return the Cartan type of this Kleber tree.
EXAMPLES:
sage: KT = KleberTree(['A', 3], [[1,1]])
sage: KT.cartan_type()
['A', 3]
Iterate (recursively) over the nodes in the tree following a depth-first traversal.
EXAMPLES:
sage: KT = KleberTree(['A', 3], [[2, 2], [2, 3]])
sage: for x in KT.depth_first_iter(): x
...
Kleber tree node with weight [0, 5, 0] and upwards edge root [0, 0, 0]
Kleber tree node with weight [1, 3, 1] and upwards edge root [0, 1, 0]
Kleber tree node with weight [2, 1, 2] and upwards edge root [0, 1, 0]
Kleber tree node with weight [0, 3, 0] and upwards edge root [1, 2, 1]
Kleber tree node with weight [1, 1, 1] and upwards edge root [0, 1, 0]
Kleber tree node with weight [0, 1, 0] and upwards edge root [1, 2, 1]
Return a DiGraph representation of this Kleber tree.
EXAMPLES:
sage: KT = KleberTree(['D', 4], [[2, 2]])
sage: KT.digraph()
Digraph on 3 vertices
Return the plot of self as a directed graph.
EXAMPLES:
sage: KT = KleberTree(['D', 4], [[2, 2]])
sage: show_default(False) #do not show the plot by default
sage: KT.plot()
Graphics object consisting of 8 graphics primitives
Bases: sage.structure.element.Element
A node in the Kleber tree.
This class is meant to be used internally by the Kleber tree class and should not be created directly by the user.
For more on the Kleber tree and the nodes, see KleberTree.
Return the depth of this node in the tree.
EXAMPLES:
sage: RS = RootSystem(['A', 2])
sage: WS = RS.weight_space()
sage: R = RS.root_space()
sage: KT = KleberTree(['A', 2], [[1,1]])
sage: n = KT(WS.sum_of_terms([(1,5), (2,2)]), R.zero())
sage: n.depth
1
sage: n2 = KT(WS.sum_of_terms([(1,5), (2,2)]), R.zero(), n)
sage: n2.depth
2