[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Homomorphisms between Modules

It is possible to create a homomorphism between two modules, take the image and kernel of such and verify that these are submodules of the codomain and domain respectively. The Hom-module can also be created as a module of an order.

hom<M -> N | T> : ModOrd, ModOrd, Map -> Map
hom<M -> N | T> : ModOrd, ModOrd, SeqEnum[ModTupRngElt] -> Map
hom<M -> N | T> : ModOrd, ModOrd, MtrxSpcElt -> Map
    ModuleBasis: BoolElt                Default: true
Return a homomorphism from M into N as specified by T from which the images of the generators can be inferred. T may be a map between the vector spaces of same degree as M and N, a matrix over the field of fractions or a sequence of vectors. If ModuleBasis is true then the matrix will be taken to be a transformation between the modules and as such will be expected to have size Dimension(M)*Dimension(N) otherwise it will be interpreted as a transformation between the corresponding vector spaces and will be expected to have size Degree(M)*Degree(N).
Hom(M, N) : ModOrd, ModOrd -> ModOrd, Map
The module of homomorphisms between M and N and the map from the hom--module to the collection of maps from M to N, (such that given an element of the hom--module a homomorphism from M to N is returned). The module is over the same order as M and N.
IsSubmodule(M, N) : ModOrd, ModOrd -> BoolElt, Map
Return true if M is a submodule of N and the map embedding M into N.
Morphism(M, N) : ModOrd, ModOrd -> Map

The map giving the morphism from M to N. Either M is a submodule of N, in which case the embedding of M into N is returned, or N is a quotient module of M, in which case the natural epimorphism from M onto N is returned.


Example ModOrd_hom (H65E3)

This example demonstrates the use of homomorphisms between modules over orders. Let M and V be as above.

> S := [V|[0,1,0], [4,4,0]];
> Mod := Module(S);
> W := KModule(FieldOfFractions(M), 4);
> S := [W|[3, 2, 1, 0]];
> N := Module(S);

> h := hom<Mod -> N | >; >> h := hom<Mod -> N | >; ^ Runtime error in map< ... >: No images given
> h := hom<Mod -> N | V.1, V.2, V.3>; >> h := hom<Mod -> N | V.1, V.2, V.3>; ^ Runtime error in map< ... >: An image for each generator is required > h := hom<Mod -> N | W![3, 2, 1, 0], W![3*(M.2 + 1), 2*(M.2 + 1), M.2 + 1, > 0] >; > h(Mod!(4*V.1)); ([12, 0] [8, 0] [4, 0] [0, 0]) > h(Mod!V![0, 1, 0]); ([3, 3] [2, 2] [1, 1] [0, 0]) > I := Image(h); > I; free module over Maximal Equation Order with defining polynomial x^2 + 5 over Z with (pseudo) basis in echelon form: <[4, 0], [1, 1]> * ( 3/1 2/1 1/1 0 ) > K := Kernel(h); > K; module over Maximal Equation Order with defining polynomial x^2 + 5 over Z with (pseudo) basis in echelon form: <[-1, 0]> * ( -1/1 - $.1 1/1 0 ) > IsSubmodule(K, Mod); true Mapping from: ModOrd: K to ModOrd: Mod > Hom(Mod, N); module over Maximal Equation Order with defining polynomial x^2 + 5 over Z <[1, 0] / 4> car <[1, 0]> Mapping from: module over Maximal Equation Order with defining polynomial x^2 + 5 over Z <[1, 0] / 4> car <[1, 0]> to Power Structure of Map given by a rule [no inverse] > H, m := $1; > m(H![5, 20]); Mapping from: ModOrd: Mod to ModOrd: N

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]