#### D.4.8.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;

User manual for Singular version 4-0-3, 2016, generated by texi2html.