Singular Manual: truncateM

| #### D.15.26.2 truncateM Procedure from library `tateProdCplxNegGrad.lib` (see tateProdCplxNegGrad_lib). Usage: truncateM(M,c); M module, c intvec Purpose: truncate M at c Assume: `M` is multigraded S-module with S multigraded ring, c is an intvec of the right length Return: module, the truncated module M_{>= c} Note: Output is the truncated module (multigraded , grading is not shifted), works for arbitrary products Example:
    LIB "tateProdCplxNegGrad.lib";
    intvec c = 1,1,1;
    def(S,E) = productOfProjectiveSpaces(c);
    setring(S);
    intmat grading[3][2] = 0,0,0,0,0,0;
    module te = freemodule(2);
    te = setModuleGrading(te,grading);
    intvec c = 1,1,1;
    ==> // ** redefining c (intvec c = 1,1,1;) ./examples/truncateM.sing:8
    module Mtrunc = truncateM(te,c);
    Mtrunc;
    ==> Mtrunc[1]=x(0)(1)*x(1)(1)*x(2)(1)*gen(1)
    ==> Mtrunc[2]=x(0)(0)*x(1)(1)*x(2)(1)*gen(1)
    ==> Mtrunc[3]=x(0)(1)*x(1)(0)*x(2)(1)*gen(1)
    ==> Mtrunc[4]=x(0)(0)*x(1)(0)*x(2)(1)*gen(1)
    ==> Mtrunc[5]=x(0)(1)*x(1)(1)*x(2)(0)*gen(1)
    ==> Mtrunc[6]=x(0)(0)*x(1)(1)*x(2)(0)*gen(1)
    ==> Mtrunc[7]=x(0)(1)*x(1)(0)*x(2)(0)*gen(1)
    ==> Mtrunc[8]=x(0)(0)*x(1)(0)*x(2)(0)*gen(1)
    ==> Mtrunc[9]=x(0)(1)*x(1)(1)*x(2)(1)*gen(2)
    ==> Mtrunc[10]=x(0)(0)*x(1)(1)*x(2)(1)*gen(2)
    ==> Mtrunc[11]=x(0)(1)*x(1)(0)*x(2)(1)*gen(2)
    ==> Mtrunc[12]=x(0)(0)*x(1)(0)*x(2)(1)*gen(2)
    ==> Mtrunc[13]=x(0)(1)*x(1)(1)*x(2)(0)*gen(2)
    ==> Mtrunc[14]=x(0)(0)*x(1)(1)*x(2)(0)*gen(2)
    ==> Mtrunc[15]=x(0)(1)*x(1)(0)*x(2)(0)*gen(2)
    ==> Mtrunc[16]=x(0)(0)*x(1)(0)*x(2)(0)*gen(2)
    getModuleGrading(Mtrunc);
    ==> 0,0,
    ==> 0,0,
    ==> 0,0
    multiDeg(Mtrunc);
    ==> 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    ==> 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
    ==> 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

User manual for Singular version 4.4.1, 2025, generated by texi2html.