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 — Methodweight_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)Properties of weight lattices
rank — Methodrank(P::WeightLattice) -> IntReturn the rank of the weight lattice P.
is_finite — Methodis_finite(P::WeightLattice) -> BoolCheck if the weight lattice P is finite, i.e. if it has rank 0.
zero — Methodzero(P::WeightLattice) -> WeightLatticeElemReturn the neutral additive element in the weight lattice P.
gen — Methodgen(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 — Methodgens(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 — Methodroot_system(P::WeightLattice) -> RootSystemReturn the underlying root system of P.
Weight lattice elements
WeightLatticeElem — MethodWeightLatticeElem(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 — MethodWeightLatticeElem(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 — MethodWeightLatticeElem(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 — MethodWeightLatticeElem(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 — MethodWeightLatticeElem(r::RootSpaceElem) -> WeightLatticeElemConstruct a weight lattice element from the root space element r.
Basic arithmetic operations like zero, +, -, * (with integer scalars), and == are supported.
coeff — Methodcoeff(w::WeightLatticeElem, i::Int) -> ZZRingElemReturn the coefficient of the i-th fundamental weight in w.
This can be also accessed via w[i].
coefficients — Methodcoefficients(w::WeightLatticeElem) -> ZZMatrixReturn the coefficients of the weight lattice element w w.r.t. the fundamental weights as a row vector.
iszero — Methodiszero(w::WeightLatticeElem) -> BoolReturn whether w is zero.
is_dominant — Methodis_dominant(w::WeightLatticeElem) -> BoolCheck if w is a dominant weight, i.e. if all coefficients are non-negative.
is_fundamental_weight — Methodis_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 — Methodis_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 — Methodreflect(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! — Methodreflect!(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 — Methodreflect(w::WeightLatticeElem, beta::RootSpaceElem) -> RootSpaceElemReturn the reflection of w in the hyperplane orthogonal to root beta.
reflect! — Methodreflect!(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 — Methodconjugate_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 — Methodconjugate_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.