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.
zero
— Methodzero(V::LieAlgebraModule{C}) -> LieAlgebraModuleElem{C}
Return the zero element of the Lie algebra module V
.
iszero
— Methodiszero(v::LieAlgebraModuleElem{C}) -> Bool
Check whether the Lie algebra module element v
is zero.
dim
— Methoddim(V::LieAlgebraModule{C}) -> Int
Return the dimension of the Lie algebra module V
.
basis
— Methodbasis(V::LieAlgebraModule{C}) -> Vector{LieAlgebraModuleElem{C}}
Return a basis of the Lie algebra module V
.
basis
— Methodbasis(V::LieAlgebraModule{C}, i::Int) -> LieAlgebraModuleElem{C}
Return the i
-th basis element of the Lie algebra module V
.
coefficients
— Methodcoefficients(v::LieAlgebraModuleElem{C}) -> Vector{C}
Return the coefficients of v
with respect to basis(::LieAlgebraModule)
.
coeff
— Methodcoeff(v::LieAlgebraModuleElem{C}, i::Int) -> C
Return the i
-th coefficient of v
with respect to basis(::LieAlgebraModule)
.
getindex
— Methodgetindex(v::LieAlgebraModuleElem{C}, i::Int) -> C
Return the i
-th coefficient of v
with respect to basis(::LieAlgebraModule)
.
symbols
— Methodsymbols(V::LieAlgebraModule{C}) -> Vector{Symbol}
Return the symbols used for printing basis elements of the Lie algebra module V
.
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
.
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
standard_module
— Methodstandard_module(L::LinearLieAlgebra{C}) -> 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.
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
dual
— Methoddual(V::LieAlgebraModule{C}) -> 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); # 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
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); # some module
julia> V2 = symmetric_power(standard_module(L), 3); # 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
tensor_product
— Methodtensor_product(V::LieAlgebraModule{C}...) -> LieAlgebraModule{C} ⊗(V::LieAlgebraModule{C}...) -> LieAlgebraModule{C}
Construct the tensor product of the modules V...
.
Examples
julia> L = special_linear_lie_algebra(QQ, 3);
julia> V1 = exterior_power(standard_module(L), 2); # some module
julia> V2 = symmetric_power(standard_module(L), 3); # 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
exterior_power
— Methodexterior_power(V::LieAlgebraModule{C}, k::Int) -> LieAlgebraModule{C}
Construct the k
-th exterior power $\bigwedge^k (V)$ of the module V
.
Examples
julia> L = special_linear_lie_algebra(QQ, 3);
julia> V = symmetric_power(standard_module(L), 3); # some module
julia> exterior_power(V, 2)
Exterior power module
of dimension 45
2nd exterior power of
3rd symmetric power of
standard module
over special linear Lie algebra of degree 3 over QQ
symmetric_power
— Methodsymmetric_power(V::LieAlgebraModule{C}, k::Int) -> LieAlgebraModule{C}
Construct the k
-th symmetric power $S^k (V)$ of the module V
.
Examples
julia> L = special_linear_lie_algebra(QQ, 3);
julia> V = exterior_power(standard_module(L), 2); # some module
julia> symmetric_power(V, 3)
Symmetric power module
of dimension 10
3rd symmetric power of
2nd exterior power of
standard module
over special linear Lie algebra of degree 3 over QQ
tensor_power
— Methodtensor_power(V::LieAlgebraModule{C}, k::Int) -> LieAlgebraModule{C}
Construct the k
-th tensor power $T^k (V)$ of the module V
.
Examples
julia> L = special_linear_lie_algebra(QQ, 3);
julia> V = exterior_power(standard_module(L), 2); # some module
julia> tensor_power(V, 3)
Tensor power module
of dimension 27
3rd tensor power of
2nd exterior power of
standard module
over special linear Lie algebra of degree 3 over QQ
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 left 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.
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.
Type-dependent getters
is_standard_module
— Methodis_standard_module(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as a standard module.
is_dual
— Methodis_dual(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as a dual module.
is_direct_sum
— Methodis_direct_sum(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as a direct sum of modules.
is_tensor_product
— Methodis_tensor_product(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as a tensor product of modules.
is_exterior_power
— Methodis_exterior_power(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as an exterior power of a module.
is_symmetric_power
— Methodis_symmetric_power(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as a symmetric power of a module.
is_tensor_power
— Methodis_tensor_power(V::LieAlgebraModule{C}) -> Bool
Check whether V
has been constructed as a tensor power of a module.
base_module
— Methodbase_module(V::LieAlgebraModule{C}) -> LieAlgebraModule{C}
Returns the base module of V
, if V
has been constructed as a power module.
base_modules
— Methodbase_modules(V::LieAlgebraModule{C}) -> Vector{LieAlgebraModule{C}}
Returns the summands or tensor factors of V
, if V
has been constructed as a direct sum or tensor product of modules.