# Singular

#### D.15.22.1 s_res

Procedure from library `schreyer.lib` (see schreyer_lib).

Usage:
s_res(ideal/module M, int len)

Return:
resolution object over basering

Purpose:
compute a non-minimal Schreyer free resolution of M of length at most len via the LiftTree algorithm described in [BMSS].

Note:
If given len is zero then nvars(basering) + 1 is used instead.
This functions is not related to the helpers from this library. This procedure works in only in commutative case.
One can switch on computation protocol and statistic (depending on the build) by setting the `prot` option.

Example:
 ```LIB "schreyer.lib"; ring R; module M = maxideal(1); M; ==> M[1]=x*gen(1) ==> M[2]=y*gen(1) ==> M[3]=z*gen(1) s_res(M, 0); // Koszul complex ==> 1 3 3 1 ==> R <-- R <-- R <-- R ==> ==> 0 1 2 3 ==> resolution not minimized yet ==> list rs = _; // get syzygies print(betti(rs, 0), "betti"); // non-minimal betties ==> 0 1 2 3 ==> ------------------------------ ==> 0: 1 3 3 1 ==> ------------------------------ ==> total: 1 3 3 1 ==> print(minres(rs)); ==> [1]: ==> _[1]=x*gen(1) ==> _[2]=y*gen(1) ==> _[3]=z*gen(1) ==> [2]: ==> _[1]=x*gen(2)-y*gen(1) ==> _[2]=x*gen(3)-z*gen(1) ==> _[3]=y*gen(3)-z*gen(2) ==> [3]: ==> _[1]=x*gen(3)-y*gen(2)+z*gen(1) ==> [4]: ==> _[1]=0 print(betti(rs, 1), "betti"); //minimal betties ==> 0 1 2 3 ==> ------------------------------ ==> 0: 1 3 3 1 ==> ------------------------------ ==> total: 1 3 3 1 ==> ```