Home Online Manual
Top
Back: depth
Forward: Ext
FastBack:
FastForward:
Up: homolog_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.4.11.5 Ext_R

Procedure from library homolog.lib (see homolog_lib).

Usage:
Ext_R(v,M[,p]); v int resp. intvec , M module, p int

Compute:
A presentation of Ext^k(M',R); for k=v[1],v[2],..., M'=coker(M). Let
 
  0 <-- M' <-- F0 <-M-- F1 <-- F2 <-- ...
be a free resolution of M'. If
 
        0 --> F0* -A1-> F1* -A2-> F2* -A3-> ...
is the dual sequence, Fi*=Hom(Fi,R), then Ext^k = ker(Ak+1)/im(Ak) is presented as in the following exact sequences:
 
    R^p --syz(Ak+1)-> Fk* ---Ak+1---->  Fk+1* ,
    R^q ----Ext^k---> R^p --syz(Ak+1)-> Fk*/im(Ak).
Hence, Ext^k=modulo(syz(Ak+1),Ak) presents Ext^k(M',R).

Return:
- module Ext, a presentation of Ext^k(M',R) if v is of type int
- a list of Ext^k (k=v[1],v[2],...) if v is of type intvec.
- In case of a third argument of type int return a list l:
 
     l[1] = module Ext^k resp. list of Ext^k
     l[2] = SB of Ext^k resp. list of SB of Ext^k
     l[3] = matrix resp. list of matrices, each representing a kbase of Ext^k
              (if finite dimensional)

Display:
printlevel >=0: (affine) dimension of Ext^k for each k (default) printlevel >=1: Ak, Ak+1 and kbase of Ext^k in Fk*

Note:
In order to compute Ext^k(M,R) use the command Ext_R(k,syz(M));
By default, the procedure uses the mres command. If called with the additional parameter "sres", the sres command is used instead.
If the attribute "isHomog" has been set for the input module, it is also set for the returned module (accordingly).

Example:
 
LIB "homolog.lib";
int p      = printlevel;
printlevel = 1;
ring r     = 0,(x,y,z),dp;
ideal i    = x2y,y2z,z3x;
module E   = Ext_R(1,i);    //computes Ext^1(r/i,r)
==> // Computing Ext^1:
==> // Let 0<--coker(M)<--F0<--F1<--F2<--... be a resolution of M,
==> // then F1*-->F2* is given by:
==> x2, -yz,0,  
==> 0,  z3, -xy,
==> xz2,0,  -y2 
==> // and F0*-->F1* is given by:
==> y2z,
==> x2y,
==> xz3 
==> 
==> // dimension of Ext^1:  -1
==> 
is_zero(E);
==> 1
qring R    = std(x2+yz);
intvec v   = 0,2;
printlevel = 2;             //shows what is going on
ideal i    = x,y,z;         //computes Ext^i(r/(x,y,z),r/(x2+yz)), i=0,2
list L     = Ext_R(v,i,1);  //over the qring R=r/(x2+yz), std and kbase
==> // Computing Ext^0:
==> // Let 0<--coker(M)<--F0<--F1<--F2<--... be a resolution of M,
==> // then F0*-->F1* is given by:
==> z,
==> y,
==> x 
==> // and F-1*-->F0* is given by:
==> 0
==> 
==> // dimension of Ext^0:  -1
==> 
==> // columns of matrix are kbase of Ext^0 in F0*:
==> 0
==> 
==> // Computing Ext^2:
==> // Let 0<--coker(M)<--F0<--F1<--F2<--... be a resolution of M,
==> // then F2*-->F3* is given by:
==> x,-y,z, 0,
==> z,x, 0, z,
==> 0,0, x, y,
==> 0,0, -z,x 
==> // and F1*-->F2* is given by:
==> y,-z,0, 
==> x,0, -z,
==> 0,x, -y,
==> 0,z, x  
==> 
==> // dimension of Ext^2:  0
==> // vdim of Ext^2:       1
==> 
==> // columns of matrix are kbase of Ext^2 in F2*:
==> x, 
==> -z,
==> 0, 
==> 0  
==> 
printlevel = p;