next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Macaulay2Doc :: computing syzygies

computing syzygies

A syzygy among the columns of a matrix is, by definition, an element of the kernel of the corresponding map between free modules, and the easiest way to compute the syzygies applying the function kernel.
i1 : R = QQ[x..z];
i2 : f = vars R

o2 = | x y z |

             1       3
o2 : Matrix R  <--- R
i3 : K = kernel f

o3 = image {1} | -y 0  -z |
           {1} | x  -z 0  |
           {1} | 0  y  x  |

                             3
o3 : R-module, submodule of R
The answer is provided as a submodule of the source of f. The function super can be used to produce the module that K is a submodule of; indeed, this works for any module.
i4 : L = super K

      3
o4 = R

o4 : R-module, free, degrees {3:1}
i5 : L == source f

o5 = true
The matrix whose columns are the generators of K, lifted to the ambient free module of L if necessary, can be obtained with the function generators, an abbreviation for which is gens.
i6 : g = generators K

o6 = {1} | -y 0  -z |
     {1} | x  -z 0  |
     {1} | 0  y  x  |

             3       3
o6 : Matrix R  <--- R
We can check at least that the columns of g are syzygies of the columns of f by checking that f*g is zero.
i7 : f*g

o7 = 0

             1       3
o7 : Matrix R  <--- R
i8 : f*g == 0

o8 = true
Use the function syz if you need detailed control over the extent of the computation.