# Kleber tree¶

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:

• Travis Scrimshaw (2011-05-03): Initial version

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]

class sage.combinat.rigged_configurations.kleber_tree.KleberTree(cartan_type, B)

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 $$A_n$$, $$D_n$$, $$E_6$$, $$E_7$$, and $$E_8$$.

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 $$X$$ is a child of $$Y$$ if $$Y$$ is the root else if the edge label of $$Y$$ to its parent $$Z$$ is greater (in every component) than the label from $$X$$ to $$Y$$.

For a Kleber tree, one needs to specify a Cartan type and a sequence of tuples $$[r,s]$$, where $$s$$ is any positive integer and $$r$$ is a node in the Dynkin diagram. Each $$[r,s]$$ can be viewed as a rectangle of width $$s$$ and height $$r$$.

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]]

Element

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]

cartan_type()

Return the Cartan type of this Kleber tree.

EXAMPLES:

sage: KT = KleberTree(['A', 3], [[1,1]])
sage: KT.cartan_type()
['A', 3]

depth_first_iter(cur=None)

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]

digraph()

Return a DiGraph representation of this Kleber tree.

EXAMPLES:

sage: KT = KleberTree(['D', 4], [[2, 2]])
sage: KT.digraph()
Digraph on 3 vertices

plot(**options)

Return the plot of self as a directed graph.

EXAMPLES:

sage: KT = KleberTree(['D', 4], [[2, 2]])
sage: print(KT.plot())
Graphics object consisting of 8 graphics primitives

class sage.combinat.rigged_configurations.kleber_tree.KleberTreeNode(parent_obj, node_weight, dominant_root, parent_node=None)

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.

depth()

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


#### Previous topic

Kirillov-Reshetikhin tableaux

Rigged partition