|
D.4.7.9 Hom
Procedure from library homolog.lib (see homolog_lib).
- Usage:
- Hom(M,N,[any]); M,N=modules
- Compute:
- A presentation of Hom(M',N'), M'=coker(M), N'=coker(N) as follows:
let
| F1 --M-> F0 -->M' --> 0, G1 --N-> G0 --> N' --> 0
| be presentations of M' and N'. Consider
| 0 0
|^ |^
0 --> Hom(M',N') ----> Hom(F0,N') ----> Hom(F1,N')
|^ |^
(A: induced by M) Hom(F0,G0) --A-> Hom(F1,G0)
|^ |^
(B,C:induced by N) |C |B
Hom(F0,G1) ----> Hom(F1,G1)
| Let D=modulo(A,B) and Hom=modulo(D,C), then we have exact sequences
| R^p --D-> Hom(F0,G0) --A-> Hom(F1,G0)/im(B),
R^q -Hom-> R^p --D-> Hom(F0,G0)/im(C) --A-> Hom(F1,G0)/im(B).
| Hence Hom presents Hom(M',N')
- Return:
- module Hom, a presentation of Hom(M',N'), resp., in case of
3 arguments, a list l (of size <=3):
| - l[1] = Hom
- l[2] = SB of Hom
- l[3] = kbase of coker(Hom) (if finite dimensional, not 0),
represented by elements in Hom(F0,G0) via mapping D
|
- Display:
- printlevel >=0: (affine) dimension of Hom (default)
printlevel >=1: D and C and kbase of coker(Hom) in Hom(F0,G0)
printlevel >=2: elements of kbase of coker(Hom) as matrix :F0-->G0
- Note:
- DISPLAY is as described only for a direct call of 'Hom'. Calling 'Hom'
from another proc has the same effect as decreasing printlevel by 1.
Example:
|