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] ------------------------------- ```