|
D.4.3.5 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 and ...-->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:
- l[1] = Hom
- l[2] = SB of Hom
- l[3] = kbase of coker(Hom) (if finite dimensional),
represented by elements in Hom(F0,G0) via mapping D
- Display:
- printlevel >=0: degree 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:
| LIB "homolog.lib";
int p = printlevel;
printlevel= 1; //in 'example proc' printlevel has to be increased by 1
ring r = 0,(x,y),dp;
ideal i = x2-y3,xy;
qring q = std(i);
ideal i = fetch(r,i);
module M = [-x,y],[-y2,x],[x3];
module H = Hom(M,i);
==> // degree of Hom:
==> 0
==>
==> // given ...--> F1 --M-> F0 -->M'--> 0 and ...--> G1 --N-> G0 -->N'--> 0,
==> // show D=ker(Hom(F0,G0) --> Hom(F1,G0)/im(Hom(F1,G1) --> Hom(F1,G0)))
==> y,x, 0,
==> x,y2,x2
==> // show C=im(Hom(F0,G1) --> Hom(F0,G0))
==> -y3+x2,0, xy,0,
==> 0, -y3+x2,0, xy
==>
print(H);
==> 0, x, 0,y2,0,
==> y, 0, 0,-x,x2,
==> -1,-1,x,0, 0
printlevel= 2;
list L = Hom(M,i,1);"";
==> // degree of Hom:
==> 0
==>
==> // given ...--> F1 --M-> F0 -->M'--> 0 and ...--> G1 --N-> G0 -->N'--> 0,
==> // show D=ker(Hom(F0,G0) --> Hom(F1,G0)/im(Hom(F1,G1) --> Hom(F1,G0)))
==> y,x, 0,
==> x,y2,x2
==> // show C=im(Hom(F0,G1) --> Hom(F0,G0))
==> -y3+x2,0, xy,0,
==> 0, -y3+x2,0, xy
==>
==> // element 1 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> y2,xy
==> // element 2 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> y,x
==> // element 3 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> x2,xy2
==> // element 4 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> x,y2
==> // element 5 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,x2
==>
ring s = 3,(x,y,z),(c,dp);
ideal i = jacob(ideal(x2+y5+z4));
qring rq=std(i);
matrix M[2][2]=xy,x3,5y,4z,x2;
matrix N[3][2]=x2,x,y3,3xz,x2z,z;
print(M);
==> xy,x3,
==> -y,z
print(N);
==> x2, x,
==> y3, 0,
==> x2z,z
list l=Hom(M,N,1);
==> // degree of Hom:
==> 0
==>
==> // given ...--> F1 --M-> F0 -->M'--> 0 and ...--> G1 --N-> G0 -->N'--> 0,
==> // show D=ker(Hom(F0,G0) --> Hom(F1,G0)/im(Hom(F1,G1) --> Hom(F1,G0)))
==> 0,0, 0,0, 0, 0,0, 1,
==> 0,0, 0,0, 0, 0,y3z2,0,
==> 0,0, 0,0, 0, 1,0, 0,
==> 0,0, 0,y3,y2z2,0,0, 0,
==> 0,0, 1,0, 0, 0,0, 0,
==> z,y3,0,0, 0, 0,0, 0
==> // show C=im(Hom(F0,G1) --> Hom(F0,G0))
==> x2, 0, x,0,
==> 0, x2, 0,x,
==> y3, 0, 0,0,
==> 0, y3, 0,0,
==> x2z,0, z,0,
==> 0, x2z,0,z
==>
==> // element 1 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> 0,0,
==> 0,y3
==> // element 2 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> 0, 0,
==> y3,0
==> // element 3 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> 0, 0,
==> y2,0
==> // element 4 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> 0,0,
==> y,0
==> // element 5 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> 0,0,
==> 1,0
==> // element 6 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> 0,y2z2,
==> 0,0
==> // element 7 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> y2z2,0,
==> 0, 0
==> // element 8 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> yz2,0,
==> 0, 0
==> // element 9 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> z2,0,
==> 0, 0
==> // element 10 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> y2z,0,
==> 0, 0
==> // element 11 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> yz,0,
==> 0, 0
==> // element 12 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> z,0,
==> 0,0
==> // element 13 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0, 0,
==> y2,0,
==> 0, 0
==> // element 14 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> y,0,
==> 0,0
==> // element 15 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,0,
==> 1,0,
==> 0,0
==> // element 16 of kbase of Hom in Hom(F0,G0) as matrix: F0-->G0:
==> 0,y3z2,
==> 0,0,
==> 0,0
printlevel = p;
|
|