Home Online Manual
Top
Back: lift
Forward: listvar
FastBack: Functions and system variables
FastForward: Control structures
Up: Functions
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

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 (sm=liftstd(m,T)) 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. (sm=liftstd(m,T,s) then additional matrix(m)*matrix(s)=0).
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],xyz+2z2,  -14y5z+x2z,
==> 0,     -xy-2z,s[2,3],s[2,4],-3x2y-6xz,-3x3+2z2,  
==> 3x2+yz,7y6+xz,7y6+xz,s[3,4],21xy6-yz2,21x2y5-xz2 
  matrix(i)*matrix(s);
==> _[1,1]=0
==> _[1,2]=0
==> _[1,3]=0
==> _[1,4]=0
==> _[1,5]=0
==> _[1,6]=0
See division; ideal; lift; matrix; modulo; option; ring; std; syz.