Skip to content

Commit

Permalink
Adapt return type; add more methods
Browse files Browse the repository at this point in the history
  • Loading branch information
janikapeters committed Nov 26, 2024
1 parent 9943757 commit 3e3b610
Show file tree
Hide file tree
Showing 4 changed files with 486 additions and 220 deletions.
50 changes: 50 additions & 0 deletions experimental/LieAlgebras/src/LieAlgebraModule.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1553,6 +1553,56 @@ function character(L::LieAlgebra, hw::WeightLatticeElem)
return character(R, hw)
end

function demazure_character(L::LieAlgebra, w::WeightLatticeElem, x::WeylGroupElem)
return demazure_character(root_system(L), w, x)
end

function demazure_character(
T::DataType, L::LieAlgebra, w::WeightLatticeElem, x::WeylGroupElem
)
return demazure_character(T, root_system(L), w, x)
end

function demazure_character(
L::LieAlgebra, w::WeightLatticeElem, reduced_expression::Vector{<:IntegerUnion}
)
return demazure_character(root_system(L), w, reduced_expression)
end

function demazure_character(
T::DataType,
L::LieAlgebra,
w::WeightLatticeElem,
reduced_expression::Vector{<:IntegerUnion},
)
return demazure_character(T, root_system(L), w, reduced_expression)
end

function demazure_character(L::LieAlgebra, w::Vector{<:IntegerUnion}, x::WeylGroupElem)
return demazure_character(root_system(L), w, x)
end

function demazure_character(
T::DataType, L::LieAlgebra, w::Vector{<:IntegerUnion}, x::WeylGroupElem
)
return demazure_character(T, root_system(L), w, x)
end

function demazure_character(
L::LieAlgebra, w::Vector{<:IntegerUnion}, reduced_expression::Vector{<:IntegerUnion}
)
return demazure_character(root_system(L), w, reduced_expression)
end

function demazure_character(
T::DataType,
L::LieAlgebra,
w::Vector{<:IntegerUnion},
reduced_expression::Vector{<:IntegerUnion},
)
return demazure_character(T, root_system(L), w, reduced_expression)
end

@doc raw"""
tensor_product_decomposition(L::LieAlgebra, hw1::Vector{<:IntegerUnion}, hw2::Vector{<:IntegerUnion}) -> MSet{Vector{Int}}
tensor_product_decomposition(L::LieAlgebra, hw1::WeightLatticeElem, hw2::WeightLatticeElem) -> MSet{Vector{Int}}
Expand Down
59 changes: 52 additions & 7 deletions experimental/LieAlgebras/src/RootSystem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2178,17 +2178,62 @@ function demazure_operator(r::RootSpaceElem, groupringelem::Dict{WeightLatticeEl
return dict
end

function demazure_character(w::WeightLatticeElem, x::WeylGroupElem)
reduced_expression = word(x)
character = Dict{WeightLatticeElem,Int}(w => 1)
function demazure_character(R::RootSystem, w::WeightLatticeElem, x::WeylGroupElem)
@req root_system(parent(x)) === R "parent root system mismatch"
return demazure_character(R, w, word(x))
end

function demazure_character(
T::DataType, R::RootSystem, w::WeightLatticeElem, x::WeylGroupElem
)
@req root_system(parent(x)) === R "parent root system mismatch"
return demazure_character(T, R, w, word(x))
end

function demazure_character(
R::RootSystem, w::WeightLatticeElem, reduced_expression::Vector{<:IntegerUnion}
)
return demazure_character(Int, R, w, reduced_expression)
end

function demazure_character(
T::DataType,
R::RootSystem,
w::WeightLatticeElem,
reduced_expression::Vector{<:IntegerUnion},
)
@req root_system(w) === R "parent root system mismatch"
@req is_dominant(w) "not a dominant weight"
char = Dict{WeightLatticeElem,T}(w => T(1))
for i in Iterators.reverse(reduced_expression)
character = demazure_operator(simple_root(root_system(w), Int(i)), character)
char = demazure_operator(simple_root(root_system(w), Int(i)), char)
end
return Dict(Int.(_vec(coefficients(w_))) => m for (w_, m) in character)
return char
end

function demazure_character(R::RootSystem, hw::Vector{<:IntegerUnion}, x::WeylGroupElem)
return demazure_character(WeightLatticeElem(R, hw), x)
function demazure_character(R::RootSystem, w::Vector{<:IntegerUnion}, x::WeylGroupElem)
return demazure_character(R, WeightLatticeElem(R, w), x)
end

function demazure_character(
T::DataType, R::RootSystem, w::Vector{<:IntegerUnion}, x::WeylGroupElem
)
return demazure_character(T, R, WeightLatticeElem(R, w), x)
end

function demazure_character(
R::RootSystem, w::Vector{<:IntegerUnion}, reduced_expression::Vector{<:IntegerUnion}
)
return demazure_character(R, WeightLatticeElem(R, w), reduced_expression)
end

function demazure_character(
T::DataType,
R::RootSystem,
w::Vector{<:IntegerUnion},
reduced_expression::Vector{<:IntegerUnion},
)
return demazure_character(T, R, WeightLatticeElem(R, w), reduced_expression)
end

###############################################################################
Expand Down
1 change: 1 addition & 0 deletions experimental/LieAlgebras/src/exports.jl
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export conjugate_dominant_weight_with_right_elem
export coroot
export coroots
export coxeter_matrix
export demazure_character
export demazure_operator
export derived_algebra
export dim_of_simple_module
Expand Down
Loading

0 comments on commit 3e3b610

Please sign in to comment.