Top
Back: Free resolution
Forward: Computation of Ext
FastBack: Computing Groebner and Standard Bases
FastForward: Singularity Theory
Up: Commutative Algebra
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

A.3.5 Handling graded modules

How to deal with graded modules in SINGULAR is best explained by looking at an example:

 
ring R = 0, (w,x,y,z), dp;
module I = [-x,0,-z2,0,y2z], [0,-x,-yz,0,y3], [-w,0,0,yz,-z3],
           [0,-w,0,y2,-yz2], [0,-1,-w,0,xz], [0,-w,0,y2,-yz2],
           [x2,-y2,-wy2+xz2];
print(I);
==> -x, 0,  -w, 0,   0, 0,   x2,      
==> 0,  -x, 0,  -w,  -1,-w,  -y2,     
==> -z2,-yz,0,  0,   -w,0,   -wy2+xz2,
==> 0,  0,  yz, y2,  0, y2,  0,       
==> y2z,y3, -z3,-yz2,xz,-yz2,0        

// (1) Check on degrees:
// =====================
attrib(I,"isHomog"); // attribute not set => empty output
==> 
homog(I);
==> 1
attrib(I,"isHomog");
==> 2,2,1,1,0

print(betti(I,0),"betti");  // read degrees from Betti diagram
==>            0     1
==> ------------------
==>     0:     1     -
==>     1:     2     1
==>     2:     2     5
==>     3:     -     1
==> ------------------
==> total:     5     7
==> 

// (2) Shift degrees:
// ==================
def J=I;
intvec DV = 0,0,-1,-1,-2;
attrib(J,"isHomog",DV);    // assign new weight vector
attrib(J,"isHomog");
==> 0,0,-1,-1,-2
print(betti(J,0),"betti");
==>            0     1
==> ------------------
==>    -2:     1     -
==>    -1:     2     1
==>     0:     2     5
==>     1:     -     1
==> ------------------
==> total:     5     7
==> 

intmat bettiI=betti(I,0);  // degree corresponding to first non-zero row
                           // of Betti diagram is accessible via
                           // attribute "rowShift"
attrib(bettiI);
==> attr:rowShift, type int 
intmat bettiJ=betti(J,0);
attrib(bettiJ);
==> attr:rowShift, type int 

// (3) Graded free resolutions:
// ============================
resolution resJ = mres(J,0);
attrib(resJ);
==> attr:isHomog, type intvec 
print(betti(resJ),"betti");
==>            0     1     2
==> ------------------------
==>    -2:     1     -     -
==>    -1:     2     -     -
==>     0:     1     4     -
==>     1:     -     -     1
==> ------------------------
==> total:     4     4     1
==> 
attrib(betti(resJ));
==> attr:rowShift, type int 

A check on degrees ((1), by using the homog command) shows that this is a graded matrix. The homog command assigns an admissible weight vector (here: 2,2,1,1,0) to the module I which is accessible via the attribute "isHomog". Thus, we may think of I as a graded submodule of the graded free $R$-module

\begin{displaymath}F=R(-2)^2\oplus R(-1)^2\oplus R\,.\end{displaymath}

We may also read the degrees from the Betti diagram as shown above. The degree on the left of the first nonzero row of the Betti diagram is accessible via the attribute "rowShift" of the betti matrix (which is of type intmat):

(2) We may shift degrees by assigning another admissible degree vector. Note that SINGULAR does not check whether the assigned degree vector really is admissible. Moreover, note that all assigned attributes are lost under a type conversion (e.g. from module to matrix).

(3) These considerations may be applied when computing data from free resolutions (see Computation of Ext).


Top Back: Free resolution Forward: Computation of Ext FastBack: Computing Groebner and Standard Bases FastForward: Singularity Theory Up: Commutative Algebra Top: Singular Manual Contents: Table of Contents Index: Index About: About this document
            User manual for Singular version 4.3.1, 2022, generated by texi2html.