up previous next
NewFreeModuleForSyz    --    create a new FreeModule with shifts for syz


Syntax
NewFreeModuleForSyz(L: LIST of RINGELEM): MODULE

Description
This function returns a free module of rank len(L) over the ring of L with the shifts given by the degrees in L.

NOTE: calling twice NewFreeModuleForSyz will produce different modules.

Example
/**/ use QQ[x,y,z];
/**/ L := [x^2, 0, 0, y];

-- /**/ syz(L);  --> !!! ERROR !!! as expected: 0 entries
-- for dealing with 0 entries we need to specify the FreeModule

/**/ FwShifts := NewFreeModuleForSyz([x^2, x^100, 1, y]);
/**/ [ wdeg(v) | v in gens(FwShifts) ];
[[2],  [100],  [0],  [1]]
/**/ 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]]

See Also