# Lie algebra module homomorphisms

Homomorphisms of Lie algebra modules in Oscar are represented by the type LieAlgebraModuleHom.

## Constructors

Homomorphisms of modules over the same Lie algebra $h: V_1 \to V_2$ are constructed by providing either the images of the basis elements of $V_1$ or a $\dim V_1 \times \dim V_2$ matrix.

homMethod
hom(V1::LieAlgebraModule, V2::LieAlgebraModule, imgs::Vector{<:LieAlgebraModuleElem}; check::Bool=true) -> LieAlgebraModuleHom

Construct the homomorphism from V1 to V2 by sending the i-th basis element of V1 to imgs[i] and extending linearly. All elements of imgs must lie in V2. Currently, V1 and V2 must be modules over the same Lie algebra.

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

Examples

julia> L = special_linear_lie_algebra(QQ, 2);

julia> V1 = standard_module(L);

julia> V3 = trivial_module(L, 3);

julia> V2 = direct_sum(V1, V3);

julia> h = hom(V1, V2, [V2([v, zero(V3)]) for v in basis(V1)])
Lie algebra module morphism
from standard module of dimension 2 over L
to direct sum module of dimension 5 over L

julia> [(v, h(v)) for v in basis(V1)]
2-element Vector{Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}}}:
(v_1, v_1^(1))
(v_2, v_2^(1))
Experimental

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

source
homMethod
hom(V1::LieAlgebraModule, V2::LieAlgebraModule, mat::MatElem; check::Bool=true) -> LieAlgebraModuleHom

Construct the homomorphism from V1 to V2 by acting with the matrix mat from the right on the coefficient vector w.r.t. the basis of V1. mat must be a matrix of size dim(V1) \times dim(V2) over coefficient_ring(V2). Currently, V1 and V2 must be modules over the same Lie algebra.

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

Examples

julia> L = general_linear_lie_algebra(QQ, 3);

julia> V1 = standard_module(L);

julia> V2 = trivial_module(L);

julia> h = hom(V1, V2, matrix(QQ, 3, 1, [0, 0, 0]))
Lie algebra module morphism
from standard module of dimension 3 over L
to abstract Lie algebra module of dimension 1 over L

julia> [(v, h(v)) for v in basis(V1)]
3-element Vector{Tuple{LieAlgebraModuleElem{QQFieldElem}, LieAlgebraModuleElem{QQFieldElem}}}:
(v_1, 0)
(v_2, 0)
(v_3, 0)
Experimental

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

source
identity_mapMethod
identity_map(V::LieAlgebraModule) -> LieAlgebraModuleHom

Construct the identity map on V.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

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

julia> identity_map(V)
Lie algebra module morphism
from standard module of dimension 3 over L
to standard module of dimension 3 over L
Experimental

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

source
zero_mapMethod
zero_map(V1::LieAlgebraModule, V2::LieAlgebraModule) -> LieAlgebraModuleHom
zero_map(V::LieAlgebraModule) -> LieAlgebraModuleHom

Construct the zero map from V1 to V2 or from V to V.

Examples

julia> L = special_linear_lie_algebra(QQ, 3);

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

julia> zero_map(V)
Lie algebra module morphism
from standard module of dimension 3 over L
to standard module of dimension 3 over L
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 LieAlgebraModuleHoms:

### Basic properties

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

matrixMethod
matrix(h::LieAlgebraModuleHom) -> MatElem

Return the transformation matrix of h w.r.t. the bases of the domain and codomain.

Note: The matrix operates on the coefficient vectors from the right.

Experimental

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

source

### Image

imageMethod
image(h::LieAlgebraModuleHom, v::LieAlgebraModuleElem) -> LieAlgebraModuleElem

Return the image of v under h.

Experimental

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

source

### Composition

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

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::LieAlgebraModuleHom) -> 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::LieAlgebraModuleHom) -> LieAlgebraModuleHom

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

### Hom constructions

Lie algebra module homomorphisms support + and - if they have the same domain and codomain.

canonical_injectionsMethod
canonical_injections(V::LieAlgebraModule) -> Vector{LieAlgebraModuleHom}

Return the canonical injections from all components into $V$ where $V$ has been constructed as $V_1 \oplus \cdot \oplus V_n$.

Experimental

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

source
canonical_injectionMethod
canonical_injection(V::LieAlgebraModule, i::Int) -> LieAlgebraModuleHom

Return the canonical injection $V_i \to V$ where $V$ has been constructed as $V_1 \oplus \cdot \oplus V_n$.

Experimental

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

source
canonical_projectionsMethod
canonical_projections(V::LieAlgebraModule) -> Vector{LieAlgebraModuleHom}

Return the canonical projections from $V$ to all components where $V$ has been constructed as $V_1 \oplus \cdot \oplus V_n$.

Experimental

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

source
canonical_projectionMethod
canonical_projection(V::LieAlgebraModule, i::Int) -> LieAlgebraModuleHom

Return the canonical projection $V \to V_i$ where $V$ has been constructed as $V_1 \oplus \cdot \oplus V_n$.

Experimental

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

source
hom_direct_sumMethod
hom_direct_sum(V::LieAlgebraModule{C}, W::LieAlgebraModule{C}, hs::Matrix{<:LieAlgebraModuleHom}) -> LieAlgebraModuleHom
hom_direct_sum(V::LieAlgebraModule{C}, W::LieAlgebraModule{C}, hs::Vector{<:LieAlgebraModuleHom}) -> LieAlgebraModuleHom

Given modules V and W which are direct sums with r respective s summands, say $M = M_1 \oplus \cdots \oplus M_r$, $N = N_1 \oplus \cdots \oplus N_s$, and given a $r \times s$ matrix hs of homomorphisms $h_{ij} : V_i \to W_j$, return the homomorphism $V \to W$ with $ij$-components $h_{ij}$.

If hs is a vector, then it is interpreted as a diagonal matrix.

Experimental

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

source
hom_tensorMethod
hom_tensor(V::LieAlgebraModule{C}, W::LieAlgebraModule{C}, hs::Vector{<:LieAlgebraModuleHom}) -> LieAlgebraModuleHom

Given modules V and W which are tensor products with the same number of factors, say $V = V_1 \otimes \cdots \otimes V_r$, $W = W_1 \otimes \cdots \otimes W_r$, and given a vector hs of homomorphisms $a_i : V_i \to W_i$, return $a_1 \otimes \cdots \otimes a_r$.

This works for $r$th tensor powers as well.

Experimental

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

source
homMethod
hom(V::LieAlgebraModule{C}, W::LieAlgebraModule{C}, h::LieAlgebraModuleHom) -> LieAlgebraModuleHom

Given modules V and W which are exterior/symmetric/tensor powers of the same kind with the same exponent, say, e.g., $V = S^k V'$, $W = S^k W'$, and given a homomorphism $h : V' \to W'$, return $S^k h: V \to W$ (analogous for other types of powers).

Experimental

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

source