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_algebra
— Methodbase_lie_algebra(V::LieAlgebraModule{C}) -> LieAlgebra{C}
Return the Lie algebra V
is a module over.
This function is part of the experimental code in Oscar. Please read here for more details.
zero
— Methodzero(V::LieAlgebraModule{C}) -> LieAlgebraModuleElem{C}
Return the zero element of the Lie algebra module V
.
This function is part of the experimental code in Oscar. Please read here for more details.
iszero
— Methodiszero(v::LieAlgebraModuleElem{C}) -> Bool
Check whether the Lie algebra module element v
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.
dim
— Methoddim(V::LieAlgebraModule{C}) -> Int
Return the dimension of the Lie algebra module V
.
This function is part of the experimental code in Oscar. Please read here for more details.
basis
— Methodbasis(V::LieAlgebraModule{C}) -> Vector{LieAlgebraModuleElem{C}}
Return a basis of the Lie algebra module V
.
This function is part of the experimental code in Oscar. Please read here for more details.
basis
— Methodbasis(V::LieAlgebraModule{C}, i::Int) -> LieAlgebraModuleElem{C}
Return the i
-th basis element of the Lie algebra module V
.
This function is part of the experimental code in Oscar. Please read here for more details.
coefficients
— Methodcoefficients(v::LieAlgebraModuleElem{C}) -> Vector{C}
Return the coefficients of v
with respect to basis(::LieAlgebraModule)
.
This function is part of the experimental code in Oscar. Please read here for more details.
coeff
— Methodcoeff(v::LieAlgebraModuleElem{C}, i::Int) -> C
Return the i
-th coefficient of v
with respect to basis(::LieAlgebraModule)
.
This function is part of the experimental code in Oscar. Please read here for more details.
getindex
— Methodgetindex(v::LieAlgebraModuleElem{C}, i::Int) -> C
Return the i
-th coefficient of v
with respect to basis(::LieAlgebraModule)
.
This function is part of the experimental code in Oscar. Please read here for more details.
symbols
— Methodsymbols(V::LieAlgebraModule{C}) -> Vector{Symbol}
Return the symbols used for printing basis elements of the Lie algebra module V
.
This function is part of the experimental code in Oscar. Please read here for more details.
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 LieAlgebraModuleElem
s.
The module action is defined as *
.
*
— Methodaction(x::LieAlgebraElem{C}, v::LieAlgebraModuleElem{C}) -> LieAlgebraModuleElem{C}
*(x::LieAlgebraElem{C}, v::LieAlgebraModuleElem{C}) -> LieAlgebraModuleElem{C}
Apply the action of x
on v
.
This function is part of the experimental code in Oscar. Please read here for more details.
Module constructors
trivial_module
— Functiontrivial_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
This function is part of the experimental code in Oscar. Please read here for more details.
standard_module
— Methodstandard_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.
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
This function is part of the experimental code in Oscar. Please read here for more details.
dual
— Methoddual(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
This function is part of the experimental code in Oscar. Please read here for more details.
direct_sum
— Methoddirect_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
This function is part of the experimental code in Oscar. Please read here for more details.
tensor_product
— Methodtensor_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
This function is part of the experimental code in Oscar. Please read here for more details.
exterior_power
— Methodexterior_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)
This function is part of the experimental code in Oscar. Please read here for more details.
symmetric_power
— Methodsymmetric_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
This function is part of the experimental code in Oscar. Please read here for more details.
tensor_power
— Methodtensor_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)
This function is part of the experimental code in Oscar. Please read here for more details.
abstract_module
— Methodabstract_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 ofL
on some element $v$ of the constructed module is given by right multiplication of the matrixtransformation_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
: Iftrue
, check that the structure constants are anti-symmetric and satisfy the Jacobi identity. This istrue
by default.
This function is part of the experimental code in Oscar. Please read here for more details.
abstract_module
— Methodabstract_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
: Iftrue
, check that the structure constants are anti-symmetric and satisfy the Jacobi identity. This istrue
by default.
This function is part of the experimental code in Oscar. Please read here for more details.