# 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.