Weyl groups are represented by objects of type WeylGroup <: Group, and their elements by WeylGroupElem <: GroupElement.
Warning
Weyl groups in OSCAR only afford right actions on roots and weights. Note however, that this may differ from the literature, but is to stay consistent with the conventions in the rest of OSCAR.
Note
See Cartan types for our conventions on Cartan types and ordering of simple roots.
julia> weyl_group(root_system([2 -1; -12]))
Weyl group
of root system of rank 2
of type A2
julia> weyl_group(root_system(matrix(ZZ, 2, 2, [2, -1, -1, 2]); detect_type=false))
Weyl group
of root system of rank 2
of unknown type
julia> weyl_group(root_system(matrix(ZZ, [2 -1 -2; -120; -102])))
Weyl group
of root system of rank 3
of type C3 (with non-canonical ordering of simple roots)
order(x::WeylGroupElem) -> ZZRingELem
order(::Type{T}, x::WeylGroupElem) where {T} -> T
Return the order of x, i.e. the smallest natural number n such that is_one(x^n).
If x is of infinite order, an InfiniteOrderError exception will be thrown. Use is_finite_order(::WeylGroupElem) to check this prior to calling this function if in doubt.
Return whether x is smaller than y with respect to the Bruhat order, i.e., whether some (not necessarily connected) subexpression of a reduced decomposition of y, is a reduced decomposition of x.
Return an iterator over all reduced expressions of x as Vector{UInt8}.
If up_to_commutation is true, the iterator will not return an expression that only differs from a previous one by a swap of two adjacent commuting simple reflections.
The type of the iterator and the order of the elements are considered implementation details and should not be relied upon.
The second expression of the first iterator is not contained in the second iterator because it only differs from the first expression by a swap of two the two commuting simple reflections s1 and s3.
Return the geometric representation G of the Weyl group W, together with the isomorphism hom from W to G.
This representation is defined by coefficients(a) * hom(x) == coefficients(a * x) for all x in W and a a simple root of root_system(W). By linear extension, this also holds for all elements a in the root space of root_system(W).
Return the dual geometric representation G of the Weyl group W, together with the isomorphism hom from W to G.
This representation is defined by coefficients(w) * hom(x) == coefficients(w * x) for all x in W and w a fundamental weight of root_system(W). By linear extension, this also holds for all elements w in weight_lattice(root_system(W)).
Examples
julia> R = root_system(:B, 3); W = weyl_group(R);
julia> w = WeightLatticeElem(R, [1, 4, -3])
w_1 + 4*w_2 - 3*w_3
julia> x = W([1, 2, 1, 3])
s1 * s2 * s1 * s3
julia> G, hom = dual_geometric_representation(W)
(Matrix group of degree 3 over ZZ, Map: W -> G)
julia> coefficients(w) * hom(x)
[-4 6 -7]
julia> coefficients(w * x)
[-4 6 -7]