<?xml version="1.0" encoding="utf-8" ?> <!-- for emacs: -*- coding: utf-8 -*- --> <!-- Apache may like this line in the file .htaccess: AddCharset utf-8 .html --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg-flat.dtd" > <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head><title>computing resolutions</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="_computing_spsyzygies.html">next</a> | <a href="_compress.html">previous</a> | <a href="_computing_spsyzygies.html">forward</a> | <a href="_compress.html">backward</a> | up | <a href="index.html">top</a> | <a href="master.html">index</a> | <a href="toc.html">toc</a> | <a href="http://www.math.uiuc.edu/Macaulay2/">Macaulay2 web site</a></div> </td> </tr> </table> <hr/> <div><h1>computing resolutions</h1> <div>Use the function <a href="_resolution.html" title="projective resolution">resolution</a>, often abbreviated as <tt>res</tt>, to compute a free resolution of a module.<table class="examples"><tr><td><pre>i1 : R = QQ[x..z];</pre> </td></tr> <tr><td><pre>i2 : M = cokernel vars R o2 = cokernel | x y z | 1 o2 : R-module, quotient of R</pre> </td></tr> <tr><td><pre>i3 : C = res M 1 3 3 1 o3 = R <-- R <-- R <-- R <-- 0 0 1 2 3 4 o3 : ChainComplex</pre> </td></tr> </table> See <a href="_chain_spcomplexes.html" title="">chain complexes</a> for further details about how to handle and examine the result.<p/> A reference to the result is stored within the module <tt>M</tt>, so that requesting a computation of <tt>res M</tt> a second time yields the formerly computed result immediately.<p/> If the computation is interrupted or discontinued after the skeleton has been successfully computed, then the partially completed resolution is available as <tt>M.cache.resolution</tt>, and can be examined with <a href="_status.html" title="status of a resolution computation">status</a>. The computation can be continued with <tt>res M</tt>. Here is an example, with an alarm interrupting the computation several times before it's complete. (On my machine, the computation takes a total of 14 seconds.)<p/> <table class="examples"><tr><td><pre>i4 : R = ZZ/2[a..d];</pre> </td></tr> <tr><td><pre>i5 : M = coker random(R^4, R^{5:-3,6:-4});</pre> </td></tr> <tr><td><pre>i6 : (<< "-- computation started: " << endl; while true do try ( alarm 3; time res M; alarm 0; << "-- computation complete" << endl; status M.cache.resolution; << res M << endl << endl; break; ) else ( << "-- computation interrupted" << endl; status M.cache.resolution; << "-- continuing the computation" << endl; )) -- computation started: -- used 1.3528 seconds -- computation complete 4 11 89 122 40 R <-- R <-- R <-- R <-- R <-- 0 0 1 2 3 4 5</pre> </td></tr> </table> If the user has a chain complex in hand that is known to be a projective resolution of <tt>M</tt>, then it can be installed with <tt>M.cache.resolution = C</tt>.<p/> There are various optional arguments associated with <a href="_resolution.html" title="projective resolution">resolution</a> which allow detailed control over the progress of the computation.</div> </div> </body> </html>