# Singular

### 7.3.11 lift (plural)

`Syntax:`
`lift (` ideal_expression`,` subideal_expression `)`
`lift (` module_expression`,` submodule_expression `)`
`Type:`
matrix
`Purpose:`
computes the (left) transformation matrix which expresses the (left) generators of a submodule in terms of the (left) generators of a module. Uses different algorithms for modules which are (resp. are not) represented by a Groebner basis.
More precisely, if `m` is the module, `sm` the submodule, and `T` the transformation matrix returned by lift, then `transpose(matrix(sm)) = transpose(T)*transpose(matrix(m))`. If `m` and `sm` are ideals, `ideal(sm) = ideal(transpose(T)*transpose(matrix(m)))`.

`Note:`
Gives a warning if `sm` is not a submodule.
`Example:`
 ```ring r = (0,a),(e,f,h),(c,dp); matrix D[3][3]; D[1,2]=-h; D[1,3]=2*e; D[2,3]=-2*f; def R=nc_algebra(1,D); // this algebra is a parametric U(sl_2) setring R; ideal i = e,h-a; // consider this parametric ideal i = std(i); print(matrix(i)); // print a compact presentation of i ==> h+(-a),e poly Z = 4*e*f+h^2-2*h; // a central element Z = Z - NF(Z,i); // a central character ideal j = std(Z); j; ==> j[1]=4*ef+h2-2*h+(-a2-2a) matrix T = lift(i,j); print(T); ==> h+(a+2), ==> 4*f ideal tj = ideal(transpose(T)*transpose(matrix(i))); size(ideal(matrix(j)-matrix(tj))); // test for 0 ==> 0 ```
See ideal (plural); liftstd (plural); module (plural).