### 7.8.6 liftstd (letterplace)

`Syntax:`
  `liftstd (` ideal_expression`,` matrix_name `)`
  `liftstd (` module_expression`,` matrix_name `)`
  `liftstd (` ideal_expression`,` matrix_name`,` module_name `)`
  `liftstd (` module_expression`,` matrix_name`,` module_name `)`
`Type:`
  ideal or module
`Purpose:`
  returns a Groebner basis of a two-sided ideal or a bimodule and the transformation matrix from the given ideal, resp. module, to the Groebner basis from the output.
  That is, if `m` is the module (or ideal), `sm` the submodule (or ideal), and `T` the transformation matrix returned by lift, then the substitution of each `ncgen(i)` in `T` by the `m[i]` delivers a matrix, say `N`. The `i`-th generator of `sm` is equal to the sum of elements in the `i`-th column of `N`.
  In an optional third argument the syzygy bimodule will be returned.
`Example:`

      LIB "freegb.lib";
      ring r = 0,(x,y),(c,Dp);
      ring R = freeAlgebra(r, 8, 2);
      ideal I = x*y*x + 1;
      matrix T; module S;
      ideal SI = liftstd(I,T,S);
      print(matrix(SI));
      ==> x*y-y*x,y*x*x+1
      print(matrix(testLift(I,T))); // test for the result of lift
      ==> x*y-y*x,y*x*x+1
      S; // the bisyzygy module of I
      ==> S[1]=[x*y*ncgen(1)*x*y+y*x*x*y*ncgen(1)-y*x*ncgen(1)*y*x-ncgen(1)*y*x*x*y\
         +y*ncgen(1)-ncgen(1)*y]
      ==> S[2]=[x*x*y*ncgen(1)*x-x*ncgen(1)*y*x*x-x*ncgen(1)+ncgen(1)*x]
      ==> S[3]=[x*y*ncgen(1)*x*x*y+y*x*x*x*y*ncgen(1)-y*x*x*ncgen(1)*y*x-ncgen(1)*y\
         *x*x*x*y+x*y*ncgen(1)+y*x*ncgen(1)-ncgen(1)*x*y-ncgen(1)*y*x]
      ==> S[4]=[x*y*x*y*ncgen(1)*x-ncgen(1)*y*x*y*x*x+y*ncgen(1)*x-ncgen(1)*y*x]
      testSyz(I,S);
      ==> _[1]=0
      ==> _[2]=0
      ==> _[3]=0
      ==> _[4]=0

See ideal; lift (letterplace); syz (letterplace); twostd (letterplace).

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