### 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.

User manual for Singular version 4.4.1, 2025, generated by texi2html.