|
3.14 mres
Syntax:
mres ( ideal_expression, int_expression )
mres ( module_expression, int_expression )
Type:
- resolution
Purpose:
- computes a minimal free resolution of an ideal or module M with the
Groebner basis method. More precisely, let A=
matrix (M), then mres
computes a free resolution of
where the columns of the matrix
are a (possibly) minimal set of generators
of M.
If the int expression k is not zero then the computation stops after k steps
and returns a list of modules
, i=1...k.
mres(M,0) returns a resolution consisting of at most n+2 modules,
where n is the number of variables of the basering.
Let list L=mres(M,0);
then L[1] consists of a minimal set of generators of the input, L[2]
consists of a minimal set of generators for the first syzygy module of
L[1] , etc., until L[p+1] , such that
for , but L[p+1] , the first syzygy module of L[p] ,
is 0 (if the basering is not a qring).
Note:
- Accessing single elements of a resolution may require that some partial
computations have to be finished and may therefore take some time.
Example:
| LIB "poly.lib";
ring A=0,(x,y,z),Dp;
matrix d[3][3];
d[1,2]=-z;
d[1,3]=2x;
d[2,3]=-2y;
ncalgebra(1,d);
ideal i=x,y,z;
i=std(i);
resolution M=mres(i,0);
// now we print the resolution out, pretty print its components
// and check that F is indeed exact
M;
==> 1 2 2 1
==> A <-- A <-- A <-- A
==>
==> 0 1 2 3
==>
for (int a=1;a<=size(list(M));a++)
{
printf("Module: %s",a);
print(matrix(M[a]));
if (a>1)
{
printf("The defect of exactness at: (%s,%s)",a-1,a);
std(flatten(transpose(M[a])*transpose(M[a-1])));
}
}
==> Module: 1
==> y,x
==> Module: 2
==> xy-2z-2,x2,
==> -y2, -xy-z+2
==> The defect of exactness at: (1,2)
==> _[1]=0
==> Module: 3
==> x,
==> -y
==> The defect of exactness at: (2,3)
==> _[1]=0
|
See
ideal;
minres;
module;
nres.
|