# Lie algebra modules

Lie algebra modules in OSCAR are always finite dimensional and represented by the type LieAlgebraModule{C}. Similar to other types in OSCAR, there is the corresponding element type LieAlgebraModuleElem{C}. The type parameter C is the element type of the coefficient ring.

base_lie_algebraMethod
base_lie_algebra(V::LieAlgebraModule{C}) -> LieAlgebra{C}

Return the Lie algebra V is a module over.

Experimental

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

source
zeroMethod
zero(V::LieAlgebraModule{C}) -> LieAlgebraModuleElem{C}

Return the zero element of the Lie algebra module V.

Experimental

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

source
iszeroMethod
iszero(v::LieAlgebraModuleElem{C}) -> Bool

Check whether the Lie algebra module element v 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
dimMethod
dim(V::LieAlgebraModule{C}) -> Int

Return the dimension of the Lie algebra module V.

Experimental

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

source
basisMethod
basis(V::LieAlgebraModule{C}) -> Vector{LieAlgebraModuleElem{C}}

Return a basis of the Lie algebra module V.

Experimental

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

source
basisMethod
basis(V::LieAlgebraModule{C}, i::Int) -> LieAlgebraModuleElem{C}

Return the i-th basis element of the Lie algebra module V.

Experimental

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

source
symbolsMethod
symbols(V::LieAlgebraModule{C}) -> Vector{Symbol}

Return the symbols used for printing basis elements of the Lie algebra module V.

Experimental

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

source

## Element constructors

(V::LieAlgebraModule{C})() returns the zero element of the Lie algebra module V.

(V::LieAlgebraModule{C})(v::LieAlgebraModuleElem{C}) returns v if v is an element of L. If V is the dual module of the parent of v, it returns the dual of v. In all other cases, it fails.

(V::LieAlgebraModule{C})(v) constructs the element of V with coefficient vector v. v can be of type Vector{C}, Vector{Int}, SRow{C}, or MatElem{C} (of size $1 \times \dim(L)$).

(V::LieAlgebraModule{C})(a::Vector{T}) where {T<:LieAlgebraModuleElem{C}}): If V is a direct sum, return its element, where the $i$-th component is equal to a[i]. If V is a tensor product, return the tensor product of the a[i]. If V is a exterior (symmetric, tensor) power, return the wedge product (product, tensor product) of the a[i]. Requires that a has a suitable length, and that the a[i] are elements of the correct modules, where correct depends on the case above.

## Arithmetics

The usual arithmetics, e.g. +, -, and * (scalar multiplication), are defined for LieAlgebraModuleElems.

The module action is defined as *.

*Method
action(x::LieAlgebraElem{C}, v::LieAlgebraModuleElem{C}) -> LieAlgebraModuleElem{C}
*(x::LieAlgebraElem{C}, v::LieAlgebraModuleElem{C}) -> LieAlgebraModuleElem{C}

Apply the action of x on v.

Experimental

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

source

## Module constructors

trivial_moduleFunction
trivial_module(L::LieAlgebra{C}, d=1) -> LieAlgebraModule{C}

Construct the d-dimensional module of the Lie algebra L with trivial action.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

julia> trivial_module(L)
Abstract Lie algebra module
of dimension 1
over special linear Lie algebra of degree 3 over QQ
Experimental

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

source
standard_moduleMethod
standard_module(L::LinearLieAlgebra{C}; cached::Bool=true) -> LieAlgebraModule{C}

Construct the standard module of the linear Lie algebra L. If L is a Lie subalgebra of $\mathfrak{gl}_n(R)$, then the standard module is $R^n$ with the action of $L$ given by left multiplication.

Note

This uses the left action of $L$, and converts that to internally use the equivalent right action.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

julia> standard_module(L)
Standard module
of dimension 3
over special linear Lie algebra of degree 3 over QQ
Experimental

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

source
dualMethod
dual(V::LieAlgebraModule{C}; cached::Bool=true) -> LieAlgebraModule{C}

Construct the dual module of V.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

julia> V = exterior_power(standard_module(L), 2)[1]; # some module

julia> dual(V)
Dual module
of dimension 3
dual of
2nd exterior power of
standard module
over special linear Lie algebra of degree 3 over QQ
Experimental

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

source
direct_sumMethod
direct_sum(V::LieAlgebraModule{C}...) -> LieAlgebraModule{C}
⊕(V::LieAlgebraModule{C}...) -> LieAlgebraModule{C}

Construct the direct sum of the modules V....

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

julia> V1 = exterior_power(standard_module(L), 2)[1]; # some module

julia> V2 = symmetric_power(standard_module(L), 3)[1]; # some module

julia> direct_sum(V1, V2)
Direct sum module
of dimension 13
direct sum with direct summands
2nd exterior power of
standard module
3rd symmetric power of
standard module
over special linear Lie algebra of degree 3 over QQ
Experimental

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

source
tensor_productMethod
tensor_product(Vs::LieAlgebraModule{C}...) -> LieAlgebraModule{C}
⊗(Vs::LieAlgebraModule{C}...) -> LieAlgebraModule{C}

Given modules $V_1,\dots,V_n$ over the same Lie algebra $L$, construct their tensor product $V_1 \otimes \cdots \otimes \V_n$.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

julia> V1 = exterior_power(standard_module(L), 2)[1]; # some module

julia> V2 = symmetric_power(standard_module(L), 3)[1]; # some module

julia> tensor_product(V1, V2)
Tensor product module
of dimension 30
tensor product with tensor factors
2nd exterior power of
standard module
3rd symmetric power of
standard module
over special linear Lie algebra of degree 3 over QQ
Experimental

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

source
exterior_powerMethod
exterior_power(V::LieAlgebraModule{C}, k::Int; cached::Bool=true) -> LieAlgebraModule{C}, Map

Construct the k-th exterior power $\bigwedge^k (V)$ of the module V, together with a map that computes the wedge product of k elements of V.

Examples

julia> L = special_linear_lie_algebra(QQ, 2);

julia> V = symmetric_power(standard_module(L), 2)[1]; # some module

julia> E, map = exterior_power(V, 2)
(Exterior power module of dimension 3 over L, Map: parent of tuples of type Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}} -> E)

julia> E
Exterior power module
of dimension 3
2nd exterior power of
2nd symmetric power of
standard module
over special linear Lie algebra of degree 2 over QQ

julia> basis(E)
3-element Vector{LieAlgebraModuleElem{QQFieldElem}}:
(v_1^2)^(v_1*v_2)
(v_1^2)^(v_2^2)
(v_1*v_2)^(v_2^2)
Experimental

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

source
symmetric_powerMethod
symmetric_power(V::LieAlgebraModule{C}, k::Int; cached::Bool=true) -> LieAlgebraModule{C}, Map

Construct the k-th symmetric power $S^k (V)$ of the module V, together with a map that computes the product of k elements of V.

Examples

julia> L = special_linear_lie_algebra(QQ, 4);

julia> V = exterior_power(standard_module(L), 3)[1]; # some module

julia> S, map = symmetric_power(V, 2)
(Symmetric power module of dimension 10 over L, Map: parent of tuples of type Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}} -> S)

julia> S
Symmetric power module
of dimension 10
2nd symmetric power of
3rd exterior power of
standard module
over special linear Lie algebra of degree 4 over QQ

julia> basis(S)
10-element Vector{LieAlgebraModuleElem{QQFieldElem}}:
(v_1^v_2^v_3)^2
(v_1^v_2^v_3)*(v_1^v_2^v_4)
(v_1^v_2^v_3)*(v_1^v_3^v_4)
(v_1^v_2^v_3)*(v_2^v_3^v_4)
(v_1^v_2^v_4)^2
(v_1^v_2^v_4)*(v_1^v_3^v_4)
(v_1^v_2^v_4)*(v_2^v_3^v_4)
(v_1^v_3^v_4)^2
(v_1^v_3^v_4)*(v_2^v_3^v_4)
(v_2^v_3^v_4)^2
Experimental

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

source
tensor_powerMethod
tensor_power(V::LieAlgebraModule{C}, k::Int; cached::Bool=true) -> LieAlgebraModule{C}, Map

Construct the k-th tensor power $T^k (V)$ of the module V, together with a map that computes the tensor product of k elements of V.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

julia> V = exterior_power(standard_module(L), 2)[1]; # some module

julia> T, map = tensor_power(V, 2)
(Tensor power module of dimension 9 over L, Map: parent of tuples of type Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}} -> T)

julia> T
Tensor power module
of dimension 9
2nd tensor power of
2nd exterior power of
standard module
over special linear Lie algebra of degree 3 over QQ

julia> basis(T)
9-element Vector{LieAlgebraModuleElem{QQFieldElem}}:
(v_1^v_2)(x)(v_1^v_2)
(v_1^v_2)(x)(v_1^v_3)
(v_1^v_2)(x)(v_2^v_3)
(v_1^v_3)(x)(v_1^v_2)
(v_1^v_3)(x)(v_1^v_3)
(v_1^v_3)(x)(v_2^v_3)
(v_2^v_3)(x)(v_1^v_2)
(v_2^v_3)(x)(v_1^v_3)
(v_2^v_3)(x)(v_2^v_3)
Experimental

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

source
abstract_moduleMethod
abstract_module(L::LieAlgebra{C}, dimV::Int, transformation_matrices::Vector{<:MatElem{C}}, s::Vector{<:VarName}; check::Bool) -> LieAlgebraModule{C}

Construct the the Lie algebra module over L of dimension dimV given by transformation_matrices and with basis element names s.

• transformation_matrices: The action of the $i$-th basis element of L on some element $v$ of the constructed module is given by right multiplication of the matrix transformation_matrices[i] to the coefficient vector of $v$.
• s: A vector of basis element names. This is [Symbol("v_$i") for i in 1:dimV] by default. • check: If true, check that the structure constants are anti-symmetric and satisfy the Jacobi identity. This is true by default. Experimental This function is part of the experimental code in Oscar. Please read here for more details. source abstract_moduleMethod abstract_module(L::LieAlgebra{C}, dimV::Int, struct_consts::Matrix{SRow{C}}, s::Vector{<:VarName}; check::Bool) -> LieAlgebraModule{C} Construct the the Lie algebra module over L of dimension dimV given by structure constants struct_consts and with basis element names s. The action on the newly constructed Lie algebra module V is determined by the structure constants in struct_consts as follows: let$x_i$denote the$i$-th standard basis vector of L, and$v_i$the$i$-th standard basis vector of V. Then the entry struct_consts[i,j][k] is a scalar$a_{i,j,k}$such that$x_i * v_j = \sum_k a_{i,j,k} v_k$. • s: A vector of basis element names. This is [Symbol("v_$i") for i in 1:dimV] by default.
• check: If true, check that the structure constants are anti-symmetric and satisfy the Jacobi identity. This is true by default.
Experimental

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

source