Weight lattices
Weight lattices are represented by objects of type WeightLattice <: AdditiveGroup, and their elements by WeightLatticeElem <: AdditiveGroupElement.
They are introduced to have a formal parent object of all weights that correspond to a common given root system.
See Cartan types for our conventions on Cartan types and ordering of simple roots.
Table of contents
Constructing weight lattices
weight_lattice — Method
weight_lattice(R::RootSystem) -> WeightLatticeReturn the weight lattice of R, i.e. the lattice spanned by the fundamental weights.
This is the parent of all weights of R.
Examples
julia> weight_lattice(root_system([2 -1; -1 2]))
Weight lattice
of root system of rank 2
of type A2
julia> weight_lattice(root_system(matrix(ZZ, 2, 2, [2, -1, -1, 2]); detect_type=false))
Weight lattice
of root system of rank 2
of unknown type
julia> weight_lattice(root_system(matrix(ZZ, [2 -1 -2; -1 2 0; -1 0 2])))
Weight lattice
of root system of rank 3
of type C3 (with non-canonical ordering of simple roots)sourceProperties of weight lattices
gen — Method
gen(P::WeightLattice, i::Int) -> WeightLatticeElemReturn the i-th generator of the weight lattice P, i.e. the i-th fundamental weight of the root system of P.
This is a more efficient version for gens(P)[i].
See also: fundamental_weight(::RootSystem, ::Int).
gens — Method
gens(P::WeightLattice) -> Vector{WeightLatticeElem}Return the generators of the weight lattice P, i.e. the fundamental weights of the root system of P.
See also: gen(::WeightLattice, ::Int), fundamental_weights(::RootSystem).
root_system — Method
Weight lattice elements
WeightLatticeElem — Method
WeightLatticeElem(P::WeightLattice, vec::Vector{<:IntegerUnion}) -> WeightLatticeElemConstruct a weight lattice element in P with the given coefficients w.r.t. the fundamental weights of corresponding root system.
WeightLatticeElem — Method
WeightLatticeElem(R::RootSystem, vec::Vector{<:IntegerUnion}) -> WeightLatticeElemConstruct a weight lattice element in the root system R with the given coefficients w.r.t. the fundamental weights of R.
WeightLatticeElem — Method
WeightLatticeElem(P::WeightLattice, vec::ZZMatrix) -> WeightLatticeElemConstruct a weight lattice element in P with the given coefficients w.r.t. the fundamental weights of corresponding root system.
vec must be a row vector of the same length as the rank of P.
WeightLatticeElem — Method
WeightLatticeElem(R::RootSystem, vec::ZZMatrix) -> WeightLatticeElemConstruct a weight lattice element in the root system R with the given coefficient vector w.r.t. the fundamental weights of R.
vec must be a row vector of the same length as the rank of R.
WeightLatticeElem — Method
WeightLatticeElem(r::RootSpaceElem) -> WeightLatticeElemConstruct a weight lattice element from the root space element r.
Basic arithmetic operations like zero, +, -, * (with integer scalars), and == are supported.
coefficients — Method
coefficients(w::WeightLatticeElem) -> ZZMatrixReturn the coefficients of the weight lattice element w w.r.t. the fundamental weights as a row vector.
The return type may not be relied on; we only guarantee that it is a one-dimensional iterable with eltype ZZRingElem that can be indexed with integers.
is_dominant — Method
is_dominant(w::WeightLatticeElem) -> BoolCheck if w is a dominant weight, i.e. if all coefficients are non-negative.
is_fundamental_weight — Method
is_fundamental_weight(w::WeightLatticeElem) -> BoolCheck if w is a fundamental weight, i.e. exactly one coefficient is equal to 1 and all others are zero.
See also: is_fundamental_weight_with_index(::WeightLatticeElem).
is_fundamental_weight_with_index — Method
is_fundamental_weight_with_index(w::WeightLatticeElem) -> Bool, IntCheck if w is a fundamental weight and return this together with the index of the fundamental weight in fundamental_weights(::RootSystem).
If w is not a fundamental weight, the second return value is arbitrary.
See also: is_fundamental_weight(::WeightLatticeElem).
Reflections
reflect — Method
reflect(w::WeightLatticeElem, s::Int) -> WeightLatticeElemReturn the reflection of w in the hyperplane orthogonal to the s-th simple root.
See also: reflect!(::WeightLatticeElem, ::Int).
reflect! — Method
reflect!(w::WeightLatticeElem, s::Int) -> WeightLatticeElemReflect w in the hyperplane orthogonal to the s-th simple root, and return it.
This is a mutating version of reflect(::WeightLatticeElem, ::Int).
reflect — Method
reflect(w::WeightLatticeElem, beta::RootSpaceElem) -> RootSpaceElemReturn the reflection of w in the hyperplane orthogonal to root beta.
See also: reflect!(::WeightLatticeElem, ::RootSpaceElem).
reflect! — Method
reflect!(w::WeightLatticeElem, beta::RootSpaceElem) -> RootSpaceElemReflect w in the hyperplane orthogonal to the root beta, and return it.
This is a mutating version of reflect(::WeightLatticeElem, ::RootSpaceElem).
Conjugate dominant weight
conjugate_dominant_weight — Method
conjugate_dominant_weight(w::WeightLatticeElem) -> WeightLatticeElemReturn the unique dominant weight conjugate to w.
See also: conjugate_dominant_weight_with_elem(::WeightLatticeElem).
conjugate_dominant_weight_with_elem — Method
conjugate_dominant_weight_with_elem(w::WeightLatticeElem) -> Tuple{WeightLatticeElem, WeylGroupElem}Return the unique dominant weight dom conjugate to w and a Weyl group element x such that w * x == dom.