|
3.25 syz
Syntax:
syz ( ideal_expression )
syz ( module_expression )
Type:
- module
Purpose:
- computes the first syzygy (i.e., the module of relations of the given
generators) of the ideal, resp. module.
Note:
- if
S is a matrix of a left syzygy module of left submodule given by matrix M , then
transpose(S)*transpose(M) = 0 .
Example:
| LIB "nctools.lib";
LIB "poly.lib";
ring Rq=(0,Q),(x,y,z),dp; // U_q(so_3)
minpoly = RootOfUnity(6); // Q is a 6th root of unity
matrix C[3][3];
matrix D[3][3];
C[1,2]=Q2; C[1,3]=1/Q2; C[2,3]=Q2;
D[1,2]=-Q*z; D[1,3]=1/Q*y; D[2,3]=-Q*x;
ncalgebra(C,D);
option(redSB);
option(redTail); // we wish to have minimal bases
poly Cq=Q^4*x2+y2+Q^4*z2+Q*(1-Q^4)*x*y*z;
poly C1=x^3+x;
poly C2=y^3+y;
poly C3=z^3+z;
ideal I=Cq,C1,C2,C3; // ideal generated by central elements
I=std(I);
I;
==> I[1]=z3+z
==> I[2]=3*xyz+(Q-2)*x2+(-2Q+1)*y2+(Q-2)*z2
==> I[3]=x2z+(-Q)*y2z+(-Q+1)*z
==> I[4]=y3+y
==> I[5]=xy2+(Q-1)*xz2+(Q)*x
==> I[6]=x2y+yz2-xz+y
==> I[7]=x3+x
==> I[8]=3*y2z2+(-2Q+1)*x2+(Q+1)*y2+(Q+1)*z2
module S=syz(I); // S is a big module
S=std(S);
print(S[1]);
==> [(Q-1)*y,0,y,(Q)*z,(Q-1),-z,1]
print(S[size(S)]);
==> [0,0,0,0,0,0,(3Q)*y2z2+(-Q+2)*x2+(2Q-1)*y2+(2Q-1)*z2,(-Q)*x3+(-Q)*x]
matrix Tst = transpose(S)*transpose(I);
ideal tst = flatten(Tst); // just collect all the entries of Tst
std(tst); // we see it's zero
==> _[1]=0
|
See
ideal;
minres;
module;
mres;
nres.
|