previous  next
3.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 ::= Q[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 ::= Q[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]
-------------------------------