<?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>resolution(Module) -- compute a projective resolution of a module</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="___Result.html">next</a> | <a href="_resolution_lp__Matrix_rp.html">previous</a> | <a href="___Result.html">forward</a> | <a href="_resolution_lp__Matrix_rp.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>resolution(Module) -- compute a projective resolution of a module</h1> <div class="single"><h2>Synopsis</h2> <ul><li><div class="list"><dl class="element"><dt class="heading">Usage: </dt><dd class="value"><div><tt>resolution M</tt><br/><tt>res M</tt></div> </dd></dl> </div> </li> <li><span>Function: <a href="_resolution.html" title="projective resolution">resolution</a></span></li> <li><div class="single">Inputs:<ul><li><span><tt>M</tt>, <span>a <a href="___Module.html">module</a></span></span></li> </ul> </div> </li> <li><div class="single">Outputs:<ul><li><span><span>a <a href="___Chain__Complex.html">chain complex</a></span>, a free resolution of <tt>M</tt></span></li> </ul> </div> </li> <li><div class="single"><a href="_using_spfunctions_spwith_spoptional_spinputs.html">Optional inputs</a>:<ul><li><span><a href="_resolution_lp..._cm_sp__Degree__Limit_sp_eq_gt_sp..._rp.html">DegreeLimit => ...</a>, -- compute only up to this degree</span></li> <li><span><a href="_resolution_lp..._cm_sp__Hard__Degree__Limit_sp_eq_gt_sp..._rp.html">HardDegreeLimit => ...</a>, </span></li> <li><span><a href="_resolution_lp..._cm_sp__Length__Limit_sp_eq_gt_sp..._rp.html">LengthLimit => ...</a>, -- stop when the resolution reaches this length</span></li> <li><span><a href="_resolution_lp..._cm_sp__Pair__Limit_sp_eq_gt_sp..._rp.html">PairLimit => ...</a>, -- stop when this number of pairs has been handled</span></li> <li><span><a href="_resolution_lp..._cm_sp__Sort__Strategy_sp_eq_gt_sp..._rp.html">SortStrategy => ...</a>, </span></li> <li><span><a href="_resolution_lp..._cm_sp__Stop__Before__Computation_sp_eq_gt_sp..._rp.html">StopBeforeComputation => ...</a>, -- whether to stop the computation immediately</span></li> <li><span><a href="_resolution_lp..._cm_sp__Strategy_sp_eq_gt_sp..._rp.html">Strategy => ...</a>, </span></li> <li><span><a href="_resolution_lp..._cm_sp__Syzygy__Limit_sp_eq_gt_sp..._rp.html">SyzygyLimit => ...</a>, -- stop when this number of syzygies are obtained</span></li> </ul> </div> </li> </ul> </div> <div class="single"><h2>Description</h2> <div>Warning: the resolution can have free modules with unexpected ranks when the module <tt>M</tt> is not homogeneous. Here is an example where even the lengths of the resolutions differ. We compute a resolution of the kernel of a ring map in two ways. The ring <tt>R</tt> is constructed naively, but the ring <tt>S</tt> is constructed with variables of the right degrees so the ring map <tt>g</tt> will turn out to be homogeneous.<table class="examples"><tr><td><pre>i1 : k = ZZ/101; T = k[v..z];</pre> </td></tr> <tr><td><pre>i3 : m = matrix {{x,y,z,x^2*v,x*y*v,y^2*v,z*v,x*w,y^3*w,z*w}} o3 = | x y z vx2 vxy vy2 vz wx wy3 wz | 1 10 o3 : Matrix T <--- T</pre> </td></tr> <tr><td><pre>i4 : n = rank source m o4 = 10</pre> </td></tr> <tr><td><pre>i5 : R = k[u_1 .. u_n] o5 = R o5 : PolynomialRing</pre> </td></tr> <tr><td><pre>i6 : S = k[u_1 .. u_n,Degrees => degrees source m] o6 = S o6 : PolynomialRing</pre> </td></tr> <tr><td><pre>i7 : f = map(T,R,m) 2 2 3 o7 = map(T,R,{x, y, z, v*x , v*x*y, v*y , v*z, w*x, w*y , w*z}) o7 : RingMap T <--- R</pre> </td></tr> <tr><td><pre>i8 : g = map(T,S,m) 2 2 3 o8 = map(T,S,{x, y, z, v*x , v*x*y, v*y , v*z, w*x, w*y , w*z}) o8 : RingMap T <--- S</pre> </td></tr> <tr><td><pre>i9 : res ker f 1 17 57 76 46 12 1 o9 = R <-- R <-- R <-- R <-- R <-- R <-- R <-- 0 0 1 2 3 4 5 6 7 o9 : ChainComplex</pre> </td></tr> <tr><td><pre>i10 : res ker g 1 14 35 35 15 2 o10 = S <-- S <-- S <-- S <-- S <-- S <-- 0 0 1 2 3 4 5 6 o10 : ChainComplex</pre> </td></tr> <tr><td><pre>i11 : isHomogeneous f o11 = false</pre> </td></tr> <tr><td><pre>i12 : isHomogeneous g o12 = true</pre> </td></tr> </table> <table class="examples"><tr><td><pre>i13 : R = ZZ/32003[a..d]/(a^2+b^2+c^2+d^2);</pre> </td></tr> <tr><td><pre>i14 : M = coker vars R o14 = cokernel | a b c d | 1 o14 : R-module, quotient of R</pre> </td></tr> <tr><td><pre>i15 : C = resolution(M, LengthLimit=>6) 1 4 7 8 8 8 8 o15 = R <-- R <-- R <-- R <-- R <-- R <-- R 0 1 2 3 4 5 6 o15 : ChainComplex</pre> </td></tr> </table> For an overview of resolutions, in order of increasing detail, see<ul><li><span><a href="___Hilbert_spfunctions_spand_spfree_spresolutions.html" title="including degree and betti numbers">Hilbert functions and free resolutions</a></span></li> <li><span><a href="_free_spresolutions_spof_spmodules.html" title="">free resolutions of modules</a></span></li> <li><span><a href="_computing_spresolutions.html" title="">computing resolutions</a> -- most detailed</span></li> </ul> Some useful related functions<ul><li><span><a href="_betti_lp__Graded__Module_rp.html" title="display of degrees in a graded module">betti(GradedModule)</a> -- display of degrees in a graded module</span></li> <li><span><a href="_status.html" title="status of a resolution computation">status(Resolution)</a> -- status of a resolution computation</span></li> </ul> </div> </div> </div> </body> </html>