Magma allows special computation in modules over the multivariate polynomial
rings K[x_1, ..., x_n] using the Gröbner basis facilities.
See the chapter devoted to such modules for details.
This section just shows how to create the module of syzygies of a sequence
of polynomials from such a polynomial ring.
SyzygyModule(Q) : [ RngMPolElt ] -> ModTupRng
Given a sequence Q of polynomials from a multivariate polynomial ring P, return the module of syzygies of Q. This is a module over P of degree k, where k is the length of Q, consisting of all vectors v such that the sum of v[i] * Q[i] for i=1, ... k is zero.
Given a sequence Q of polynomials from a multivariate polynomial ring P, return the module of syzygies of Q as a matrix S. This an r by k matrix, where k is the length of Q, whose rows span the space of all vectors v such that the sum of v[i] * Q[i] for i=1, ... k is zero.
> // Create Q[x, y, z]
> P<x, y, z> := PolynomialRing(RationalField(), 3);
> // Form module of syzygies of a certain triple
> M := SyzygyModule([x + y, x - y, x*z + y*z]);
> M;
Module of degree 3
TOP Order
Coefficient ring:
Polynomial ring of rank 3 over Rational Field
Lexicographical Order
Variables: x, y, z
Basis:
[
z[1] - 1[3],
-1/2*x[2] + 1/2*x[1] - 1/2*y[2] - 1/2*y[1]
]
> Groebner(M);
> M;
Module of degree 3
TOP Order
Coefficient ring:
Polynomial ring of rank 3 over Rational Field
Lexicographical Order
Variables: x, y, z
Groebner basis:
[
x[2] - x[1] + y[2] + y[1],
z[1] - 1[3]
]
> BasisMatrix(M);
[-x + y x + y 0]
[ z 0 -1]
> SyzygyMatrix([x + y, x - y, x*z + y*z]);
[ z 0 -1]
[ 1/2*x - 1/2*y -1/2*x - 1/2*y 0]