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.
Table of contents
Constructing weight lattices
weight_lattice
— Methodweight_lattice(R::RootSystem) -> WeightLattice
Return 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)
This function is part of the experimental code in Oscar. Please read here for more details.
Properties of weight lattices
rank
— Methodrank(P::WeightLattice) -> Int
Return the rank of the weight lattice P
.
This function is part of the experimental code in Oscar. Please read here for more details.
is_finite
— Methodis_finite(P::WeightLattice) -> Bool
Check if the weight lattice P
is finite, i.e. if it has rank 0.
zero
— Methodzero(P::WeightLattice) -> WeightLatticeElem
Return the neutral additive element in the weight lattice P
.
This function is part of the experimental code in Oscar. Please read here for more details.
gen
— Methodgen(P::WeightLattice, i::Int) -> WeightLatticeElem
Return 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)
.
This function is part of the experimental code in Oscar. Please read here for more details.
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)
.
This function is part of the experimental code in Oscar. Please read here for more details.
root_system
— Methodroot_system(P::WeightLattice) -> RootSystem
Return the underlying root system of P
.
This function is part of the experimental code in Oscar. Please read here for more details.
Weight lattice elements
WeightLatticeElem
— MethodWeightLatticeElem(P::WeightLattice, vec::Vector{<:IntegerUnion}) -> WeightLatticeElem
Construct a weight lattice element in P
with the given coefficients w.r.t. the fundamental weights of corresponding root system.
This function is part of the experimental code in Oscar. Please read here for more details.
WeightLatticeElem
— MethodWeightLatticeElem(R::RootSystem, vec::Vector{<:IntegerUnion}) -> WeightLatticeElem
Construct a weight lattice element in the root system R
with the given coefficients w.r.t. the fundamental weights of R
.
This function is part of the experimental code in Oscar. Please read here for more details.
WeightLatticeElem
— MethodWeightLatticeElem(P::WeightLattice, vec::ZZMatrix) -> WeightLatticeElem
Construct 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
.
This function is part of the experimental code in Oscar. Please read here for more details.
WeightLatticeElem
— MethodWeightLatticeElem(R::RootSystem, vec::ZZMatrix) -> WeightLatticeElem
Construct 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
.
This function is part of the experimental code in Oscar. Please read here for more details.
WeightLatticeElem
— MethodWeightLatticeElem(r::RootSpaceElem) -> WeightLatticeElem
Construct a weight lattice element from the root space element r
.
This function is part of the experimental code in Oscar. Please read here for more details.
Basic arithmetic operations like zero
, +
, -
, *
(with integer scalars), and ==
are supported.
coeff
— Methodcoeff(w::WeightLatticeElem, i::Int) -> ZZRingElem
Return the coefficient of the i
-th fundamental weight in w
.
This can be also accessed via w[i]
.
This function is part of the experimental code in Oscar. Please read here for more details.
coefficients
— Methodcoefficients(w::WeightLatticeElem) -> ZZMatrix
Return 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.
This function is part of the experimental code in Oscar. Please read here for more details.
iszero
— Methodiszero(w::WeightLatticeElem) -> Bool
Return whether w
is zero.
This function is part of the experimental code in Oscar. Please read here for more details.
This function is part of the experimental code in Oscar. Please read here for more details.
is_dominant
— Methodis_dominant(w::WeightLatticeElem) -> Bool
Check if w
is a dominant weight, i.e. if all coefficients are non-negative.
This function is part of the experimental code in Oscar. Please read here for more details.
is_fundamental_weight
— Methodis_fundamental_weight(w::WeightLatticeElem) -> Bool
Check 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)
.
This function is part of the experimental code in Oscar. Please read here for more details.
is_fundamental_weight_with_index
— Methodis_fundamental_weight_with_index(w::WeightLatticeElem) -> Bool, Int
Check 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)
.
This function is part of the experimental code in Oscar. Please read here for more details.
Reflections
reflect
— Methodreflect(w::WeightLatticeElem, s::Int) -> WeightLatticeElem
Return the reflection of w
in the hyperplane orthogonal to the s
-th simple root.
See also: reflect!(::WeightLatticeElem, ::Int)
.
This function is part of the experimental code in Oscar. Please read here for more details.
reflect!
— Methodreflect!(w::WeightLatticeElem, s::Int) -> WeightLatticeElem
Reflect w
in the hyperplane orthogonal to the s
-th simple root, and return it.
This is a mutating version of reflect(::WeightLatticeElem, ::Int)
.
This function is part of the experimental code in Oscar. Please read here for more details.
Conjugate dominant weight
conjugate_dominant_weight
— Methodconjugate_dominant_weight(w::WeightLatticeElem) -> WeightLatticeElem
Return the unique dominant weight conjugate to w
.
See also: conjugate_dominant_weight_with_elem(::WeightLatticeElem)
.
This function is part of the experimental code in Oscar. Please read here for more details.
conjugate_dominant_weight_with_elem
— Methodconjugate_dominant_weight_with_elem(w::WeightLatticeElem) -> Tuple{WeightLatticeElem, WeylGroupElem}
Returns the unique dominant weight dom
conjugate to w
and a Weyl group element x
such that x * w == dom
.
If one wants a group element that takes w
todom
using a right action, one can use inv(x)
.
This function is part of the experimental code in Oscar. Please read here for more details.