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.