# Singular

### 5.1.46 fres

`Syntax:`
`fres (` ideal_expression/module_expression `,` int_expression `, [` string_expression `])`
`Type:`
resolution
`Purpose:`
computes a (not necessarily minimal) free resolution of the input ideal/module, using Schreyer's algorithm, see reference.
If the second argument is `n > 0`, then the resolution is computed up to step `n`. If it is `0`, `fres` computes the whole resolution.
The optional third argument can be set to
• `"complete"` (default) to compute the whole syzygy module in each step,
• `"frame"` to compute only the so-called frame,
• `"extended frame"` to compute only the first two terms of each generator w.r.t. the induced monomial ordering, or
• `"single module"` to return only the frame of each module except the last one and to return the last module in its entirety. This option can be used to reduce the amount of memory needed for the computation.
`Note:`
The input ideal/module must be a standard basis.
`Reference:`
B. Erocal, O. Motsak, F.-O. Schreyer, A. Steenpass: Refined Algorithms to Compute Syzygies. J. Symb. Comput. 74 (2016), 308-327. http://arxiv.org/abs/1502.01654
`Example:`
 ``` ring r = 0, (w,x,y,z), dp; ideal I = w2-xz, wx-yz, x2-wy, xy-z2, y2-wz; attrib(I, "isSB", 1); resolution s = fres(I, 0); s; ==> 1 5 6 2 ==> r <-- r <-- r <-- r ==> ==> 0 1 2 3 ==> resolution not minimized yet ==> print(betti(s, 0), "betti"); ==> 0 1 2 3 ==> ------------------------------ ==> 0: 1 - - - ==> 1: - 5 5 1 ==> 2: - - 1 1 ==> ------------------------------ ==> total: 1 5 6 2 ==> list l = s; print(l); ==> w2-xz, ==> wx-yz, ==> x2-wy, ==> xy-z2, ==> y2-wz print(l); ==> -x,y, 0, -z,0, -y2+wz, ==> w, -x,-y,0, z, z2, ==> -z,w, 0, -y,0, 0, ==> 0, 0, w, x, -y,-yz, ==> 0, 0, -z,-w,x, w2 print(l); ==> 0, -y2+wz, ==> y, z2, ==> -x,-wy, ==> w, yz, ==> -z,-w2, ==> 1, x ```
See Free resolution; minres; res; sres; syz.

### Misc 