|
|
5.1.81 liftstd
Syntax:
liftstd ( ideal_expression, matrix_name[, module_name][, string_expression ][, ideal_expression ])
liftstd ( module_expression, matrix_name[, module_name][, string_expression ][, module_expression ])
Type:
- ideal or module
Purpose:
- returns a standard basis of an ideal or module and the transformation
matrix from the given ideal, resp. module, to the standard basis.
That is, if m is the ideal or module, sm the standard
basis returned by liftstd, and T the transformation matrix
then matrix(sm)=matrix(m)*T and sm=ideal(matrix(m)*T),
resp. sm=module(matrix(m)*T).
If working in a quotient ring, then matrix(sm)=reduce(matrix(m)*T,0) and sm=reduce(ideal(matrix(m)*T),0).
If a module name is given as a third argument, the syzygy module will be returned.
An optional string argument specifies the Groebner base algorithm to use.
Possible values are "std" and "slimgb".
Given an optional last argument (say n), the algorithm computes a standard bases of (m+n), syzygies of m modulo n, and the transformation matrix only for m.
These are relative transformation matrix resp. the
syzygy module of n modulo m.
(For syzygies, the same can be achieved using modulo.)
Example:
| | ring R=0,(x,y,z),dp;
poly f=x3+y7+z2+xyz;
ideal i=jacob(f);
matrix T;
ideal sm=liftstd(i,T);
sm;
==> sm[1]=xy+2z
==> sm[2]=3x2+yz
==> sm[3]=yz2+3048192z3
==> sm[4]=3024xz2-yz2
==> sm[5]=y2z-6xz
==> sm[6]=3097158156288z4+2016z3
==> sm[7]=7y6+xz
print(T);
==> 0,1,T[1,3], T[1,4],y, T[1,6],0,
==> 0,0,-3x+3024z,3x, 0, T[2,6],1,
==> 1,0,T[3,3], T[3,4],-3x,T[3,6],0
matrix(sm)-matrix(i)*T;
==> _[1,1]=0
==> _[1,2]=0
==> _[1,3]=0
==> _[1,4]=0
==> _[1,5]=0
==> _[1,6]=0
==> _[1,7]=0
module s;
sm=liftstd(i,T,s);
print(s);
==> -xy-2z,0, s[1,3],s[1,4],s[1,5],s[1,6],
==> 0, -xy-2z,s[2,3],s[2,4],s[2,5],s[2,6],
==> 3x2+yz,7y6+xz,s[3,3],s[3,4],s[3,5],s[3,6]
|
See
division;
ideal;
lift;
matrix;
modulo;
option;
ring;
std;
syz.
|