This function takes in the Dynkin type of a root system along with the complete list of weights of a representation and returns the decomposition into highest weight representations. It implements a modified version of Freudenthal's multiplicity formula based on the algorithm discussed in chapter 8.9 of W. A. de Graaf, Lie algebras: theory and algorithms, North-Holland Publishing, and the article R. V. Moody and J. Patera - Fast recursion formula for weight multiplicities.
The only application of this function is to decompose the list of weights obtained with propagateWeights.
i1 : D=dynkinType{{"A",3}}; |
i2 : L={{1,0,0},{-1,1,0},{0,-1,1},{0,0,-1}}; |
i3 : decomposeWeightsList(D,L) o3 = Tally{{1, 0, 0} => 1} o3 : Tally |
To speed up the decomposition of the list of weights in the input, this function discards all non dominant weights, then decomposes the dominant character obtained from the remaining dominant weights. If the dominant weights in the list do not form the dominant character of a representation an error is returned. This is typically caused by assigning the wrong weights to the variables of the ring or to the presentation of a module. However, if the non dominant weights in L do not belong to the character of a representation, this will go undetected by this function.
The object decomposeWeightsList is a function closure.