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_latticeMethod
weight_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)
Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

Properties of weight lattices

rankMethod
rank(P::WeightLattice) -> Int

Return the rank of the weight lattice P.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
is_finiteMethod
is_finite(P::WeightLattice) -> Bool

Check if the weight lattice P is finite, i.e. if it has rank 0.

source
zeroMethod
zero(P::WeightLattice) -> WeightLatticeElem

Return the neutral additive element in the weight lattice P.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
genMethod
gen(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).

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
root_systemMethod
root_system(P::WeightLattice) -> RootSystem

Return the underlying root system of P.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

Weight lattice elements

WeightLatticeElemMethod
WeightLatticeElem(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.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
WeightLatticeElemMethod
WeightLatticeElem(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.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
WeightLatticeElemMethod
WeightLatticeElem(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.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
WeightLatticeElemMethod
WeightLatticeElem(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.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
WeightLatticeElemMethod
WeightLatticeElem(r::RootSpaceElem) -> WeightLatticeElem

Construct a weight lattice element from the root space element r.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

Basic arithmetic operations like zero, +, -, * (with integer scalars), and == are supported.

coeffMethod
coeff(w::WeightLatticeElem, i::Int) -> ZZRingElem

Return the coefficient of the i-th fundamental weight in w.

This can be also accessed via w[i].

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
coefficientsMethod
coefficients(w::WeightLatticeElem) -> ZZMatrix

Return the coefficients of the weight lattice element w w.r.t. the fundamental weights as a row vector.

Note

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.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
iszeroMethod
iszero(w::WeightLatticeElem) -> Bool

Return whether w is zero.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
is_dominantMethod
is_dominant(w::WeightLatticeElem) -> Bool

Check if w is a dominant weight, i.e. if all coefficients are non-negative.

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

Reflections

reflectMethod
reflect(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).

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source
reflect!Method
reflect!(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).

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source

Conjugate dominant weight

conjugate_dominant_weight_with_elemMethod
conjugate_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).

Experimental

This function is part of the experimental code in Oscar. Please read here for more details.

source