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 sl_2
  to direct sum module of dimension 5 over sl_2

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))
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 gl_3
  to abstract Lie algebra module of dimension 1 over gl_3

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)
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 sl_3
  to standard module of dimension 3 over sl_3
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 sl_3
  to standard module of dimension 3 over sl_3
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.

source

Image

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

Return the image of v under h.

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.

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.

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

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

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$.

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$.

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$.

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$.

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.

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.

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).

source