up previous next
syz    --    syzygy module


Syntax
syz(F: freeMODULE, L: LIST of RINGELEM): MODULE
syz(L: LIST of RINGELEM): MODULE
syz(M: IDEAL|MODULE, Index: INT): MODULE

Description
In the first two forms this function computes the syzygy module of a list of polynomials or module elements. SyzOfGens(I) is the same as syz(gens(I)).

In the last form this function returns the specified syzygy module of the minimal free resolution of M which must be homogeneous. As a side effect, it computes the Groebner basis of M. (***** NOT YET IMPLEMENTED *****)

The coefficient ring must be a field.

Example
/**/  use R ::= QQ[x,y,z];
/**/  indent(syz([x^2-y-1, y^3-z, x^2-y, y^3-z]));
SubmoduleRows(F, matrix(
  [y^3 -z, 0, 0, -x^2 +y +1],
  [0, 1, 0, -1],
  [x^2 -y, 0, -x^2 +y +1, 0],
  [0, 0, y^3 -z, -x^2 +y]
))
-------------------------------
/**/ L := [x^2, 0, 0, y];
/**/ I := ideal(L);  -- 0 gens are removed
/**/ gens(I);  --> [x^2,  y]
/**/ syz(gens(I)); -- same as SyzOfGens(I);
submodule(FreeModule(..), [[y, -x^2]])

-- /**/ syz(L);  --> !!! ERROR !!! as expected: 0 entries
-- for dealing with 0 entries we need to specify the FreeModule
/**/ F := NewFreeModule(R, 4);
/**/ indent(syz(F, L));
SubmoduleRows(F, matrix([
  [0, 1, 0, 0],
  [0, 0, 1, 0],
  [y, 0, 0, -x^2]
]))

/**/ FwShifts := NewFreeModuleForSyz([x^2, x^100, 1, y]);
/**/ S := syz(FwShifts, L);  indent(S);  --> prints "F" for free module
SubmoduleRows(F, matrix([
  [0, 1, 0, 0],
  [0, 0, 1, 0],
  [y, 0, 0, -x^2]
]))
/**/ [ wdeg(v) | v in gens(S) ];
[[100],  [0],  [3]]
ModuleOf(S); --> FreeModule(RingWithID(168, "QQ[x,y,z]"), 4)
-------------------------------
/**/ I := ideal(x^2-y*z, x*y-z^2, x*y*z);
/**/ indent(res(I));
-------------------------------
-- syz(I,i) for module in minimal resolution: NOT YET IMPLEMENTED

See Also