#### D.15.29.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.