# Lie algebra homomorphisms

Homomorphisms of Lie algebras in Oscar are represented by the type LieAlgebraHom.

## Constructors

Lie algebra homomorphisms $h: L_1 \to L_2$ are constructed by providing either the images of the basis elements of $L_1$ or a $\dim L_1 \times \dim L_2$ matrix.

homMethod
hom(L1::LieAlgebra, L2::LieAlgebra, imgs::Vector{<:LieAlgebraElem}; check::Bool=true) -> LieAlgebraHom

Construct the homomorphism from L1 to L2 by sending the i-th basis element of L1 to imgs[i] and extending linearly. All elements of imgs must lie in L2.

By setting check=false, the linear map is not checked to be compatible with the Lie bracket.

Examples

julia> L1 = special_linear_lie_algebra(QQ, 2);

julia> L2 = special_linear_lie_algebra(QQ, 3);

julia> h = hom(L1, L2, [basis(L2, 1), basis(L2, 4), basis(L2, 7)]) # embed sl_2 into sl_3
Lie algebra morphism
from special linear Lie algebra of degree 2 over QQ
to special linear Lie algebra of degree 3 over QQ

julia> [(x, h(x)) for x in basis(L1)]
3-element Vector{Tuple{LinearLieAlgebraElem{QQFieldElem}, LinearLieAlgebraElem{QQFieldElem}}}:
(e_1_2, e_1_2)
(f_1_2, f_1_2)
(h_1, h_1)
Experimental

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

source
homMethod
hom(L1::LieAlgebra, L2::LieAlgebra, mat::MatElem; check::Bool=true) -> LieAlgebraHom

Construct the homomorphism from L1 to L2 by acting with the matrix mat from the right on the coefficient vector w.r.t. the basis of L1. mat must be a matrix of size dim(L1) \times dim(L2) over coefficient_ring(L2).

By setting check=false, the linear map is not checked to be compatible with the Lie bracket.

Examples

julia> L1 = special_linear_lie_algebra(QQ, 2);

julia> L2 = general_linear_lie_algebra(QQ, 2);

julia> h = hom(L1, L2, matrix(QQ, [0 1 0 0; 0 0 1 0; 1 0 0 -1]))
Lie algebra morphism
from special linear Lie algebra of degree 2 over QQ
to general linear Lie algebra of degree 2 over QQ

julia> [(x, h(x)) for x in basis(L1)]
3-element Vector{Tuple{LinearLieAlgebraElem{QQFieldElem}, LinearLieAlgebraElem{QQFieldElem}}}:
(e_1_2, x_1_2)
(f_1_2, x_2_1)
(h_1, x_1_1 - x_2_2)
Experimental

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

source
identity_mapMethod
identity_map(L::LieAlgebra) -> LieAlgebraHom

Construct the identity map on L.

Examples

julia> L = special_linear_lie_algebra(QQ, 3)
Special linear Lie algebra of degree 3
of dimension 8
over rational field

julia> identity_map(L)
Lie algebra morphism
from special linear Lie algebra of degree 3 over QQ
to 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
zero_mapMethod
zero_map(L1::LieAlgebra, L2::LieAlgebra) -> LieAlgebraHom
zero_map(L::LieAlgebra) -> LieAlgebraHom

Construct the zero map from L1 to L2 or from L to L.

Examples

julia> L = special_linear_lie_algebra(QQ, 3)
Special linear Lie algebra of degree 3
of dimension 8
over rational field

julia> zero_map(L)
Lie algebra morphism
from special linear Lie algebra of degree 3 over QQ
to 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

## Functions

The following functions are available for LieAlgebraHoms:

### Basic properties

For a homomorphism $h: L_1 \to L_2$, domain(h) and codomain(h) return $L_1$ and $L_2$ respectively.

matrixMethod
matrix(R::Ring, arr::AbstractMatrix{T}) where {T}

Constructs the matrix over $R$ with entries as in arr.

source
matrix(R::Ring, r::Int, c::Int, arr::AbstractVector{T}) where {T}

Constructs the $r \times c$ matrix over $R$, where the entries are taken row-wise from arr.

source

### Image

imageMethod
image(h::LieAlgebraHom, x::LieAlgebraElem) -> LieAlgebraElem

Return the image of x under h.

Experimental

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

source
imageMethod
image(h::LieAlgebraHom) -> LieSubalgebra

Return the image of h as a Lie subalgebra of the codomain.

Experimental

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

source
imageMethod
image(h::LieAlgebraHom, I::LieAlgebraIdeal) -> LieSubalgebra

Return the image of I under h as a Lie subalgebra of the codomain.

Experimental

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

source
imageMethod
image(h::LieAlgebraHom, S::LieSubalgebra) -> LieSubalgebra

Return the image of S under h as a Lie subalgebra of the codomain.

Experimental

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

source

### Kernel

kernelMethod
kernel(h::LieAlgebraHom) -> LieAlgebraIdeal

Return the kernel of h as an ideal of the domain.

Experimental

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

source

### Composition

composeMethod
compose(f::LieAlgebraHom, g::LieAlgebraHom) -> LieAlgebraHom

Return the composition of f and g, i.e. the homomorphism h such that h(x) = g(f(x)) for all x in the domain of f. The codomain of f must be identical to the domain of g.

Experimental

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

source

### Inverses

is_isomorphismMethod
is_isomorphism(h::LieAlgebraHom) -> Bool

Return true if h is an isomorphism. This function tries to invert the transformation matrix of h and caches the result. The inverse isomorphism can be cheaply accessed via inv(h) after calling this function.

Experimental

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

source
invMethod
inv(h::LieAlgebraHom) -> LieAlgebraHom

Return the inverse of h. Requires h to be an isomorphism.

Experimental

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

source