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}; 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
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
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
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
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 sl_2, Map: parent of tuples of type Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}} -> exterior power module)
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)
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 sl_4, Map: parent of tuples of type Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}} -> symmetric power module)
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
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 sl_3, Map: parent of tuples of type Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}} -> tensor power module)
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)
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.
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.