up previous next
4.12.3 Shifts
           ===========================================
              THIS FACILITY IS DISABLED IN COCOA 4

           (See the new function GB.GetNthSyzShifts;
            read below for an explanation of shifts.)
           ===========================================
One creates a shifted module in CoCoA using the Shifts modifier:
    Module(Shifts([P_1,...,P_r]), V_1,...,V_n)
where the P_i's are integers or monomials in the current ring and, as usual, the V_i's are lists of polynomials, each with length r. This object represents the submodule, generated by V_1,...,V_n, of the free module of rank r which is the direct sum of R(P_1),...,R(P_r). Here, R(P_i) is the ring R with shifted degrees. To explain these shifts, recall that in a CoCoA ring, the weights of the indeterminates are given by a weights matrix, say W. The (multi)weight of the i-th indeterminate is given by the i-th column of W. By default, the weights matrix is a single row of 1s. If P_i is an integer, then the homogeneous part of R(P_i) of degree d is the homogeneous part of R of degree d+P_i. If P_i is a monomial, then the homogeneous part of R(P_i) in multidegree d is the homogeneous part of R in multidegree d+deg_W(P_i).

Example
  Use R ::= QQ[x,y,z];
  M := Module([x,y,z],[x^2,y,0]);
  LT(M.Gens[1]);
Vector(x, 0, 0)
-------------------------------
  Deg(M.Gens[1]);
1
-------------------------------
  Ss := Shifts([-3,-5,-2]);
  M := Module(Ss,[x,y,z],[x^2,y,0]);
  M;
Module(Shifts([-3, -5, -2]), [x, y, z], [x^2, y, 0])
-------------------------------
  LT(M.Gens[1]);  -- the leading term changes in the shifted module
Vector(0, y, 0)
-------------------------------
  Deg(M.Gens[1]);
6
-------------------------------
  Use S ::= QQ[x,y,z], Weights(Mat([[1,2,3],[4,5,6]]));
  M := Module(Shifts([xy, xz]), [x, y], [x,z]);
  LT(M.Gens[1]);
Vector(0, y)
-------------------------------
  MDeg(M.Gens[1]);  -- multidegree of y in R(xz), i.e. of (xz)y in R
[6, 15]
-------------------------------