<?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>manipulating chain complexes</title> <link rel="stylesheet" type="text/css" href="../../../../Macaulay2/Style/doc.css"/> </head> <body> <table class="buttons"> <tr> <td><div><a href="_maps_spbetween_spchain_spcomplexes.html">next</a> | <a href="_making_spchain_spcomplexes_spby_sphand.html">previous</a> | <a href="_maps_spbetween_spchain_spcomplexes.html">forward</a> | <a href="_making_spchain_spcomplexes_spby_sphand.html">backward</a> | <a href="_chain_spcomplexes.html">up</a> | <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> <div><a href="index.html" title="">Macaulay2Doc</a> > <a href="_chain_spcomplexes.html" title="">chain complexes</a> > <a href="_manipulating_spchain_spcomplexes.html" title="">manipulating chain complexes</a></div> <hr/> <div><h1>manipulating chain complexes</h1> <div>There are several natural ways to handle chain complexes; for details, see <a href="___Chain__Complex.html" title="the class of all chain complexes">ChainComplex</a>. Let's illustrate by making two chain complexes.<table class="examples"><tr><td><pre>i1 : R = QQ[x,y];</pre> </td></tr> <tr><td><pre>i2 : M = coker vars R o2 = cokernel | x y | 1 o2 : R-module, quotient of R</pre> </td></tr> <tr><td><pre>i3 : N = coker matrix {{x}} o3 = cokernel | x | 1 o3 : R-module, quotient of R</pre> </td></tr> <tr><td><pre>i4 : C = res M 1 2 1 o4 = R <-- R <-- R <-- 0 0 1 2 3 o4 : ChainComplex</pre> </td></tr> <tr><td><pre>i5 : D = res N 1 1 o5 = R <-- R <-- 0 0 1 2 o5 : ChainComplex</pre> </td></tr> </table> We can form the direct sum as follows.<table class="examples"><tr><td><pre>i6 : C ++ D 2 3 1 o6 = R <-- R <-- R <-- 0 0 1 2 3 o6 : ChainComplex</pre> </td></tr> </table> We can shift the degree, using the traditional notation.<table class="examples"><tr><td><pre>i7 : E = C[5] 1 2 1 o7 = R <-- R <-- R <-- 0 -5 -4 -3 -2 o7 : ChainComplex</pre> </td></tr> <tr><td><pre>i8 : E_-4 == C_1 o8 = true</pre> </td></tr> </table> The same syntax can be used to make a chain complex from a single module.<table class="examples"><tr><td><pre>i9 : R^4[1] 4 o9 = R -1 o9 : ChainComplex</pre> </td></tr> </table> We can form various tensor products with <a href="__st_st.html" title="a binary operator, usually used for tensor product or Cartesian product">**</a>, and compute <a href="___Tor.html" title="Tor module">Tor</a> using them.<table class="examples"><tr><td><pre>i10 : M ** D o10 = cokernel | x y | <-- cokernel {1} | x y | 0 1 o10 : ChainComplex</pre> </td></tr> <tr><td><pre>i11 : C ** D 1 3 3 1 o11 = R <-- R <-- R <-- R <-- 0 <-- 0 0 1 2 3 4 5 o11 : ChainComplex</pre> </td></tr> <tr><td><pre>i12 : prune HH_1(C ** D) o12 = cokernel {1} | y x | 1 o12 : R-module, quotient of R</pre> </td></tr> <tr><td><pre>i13 : prune HH_1(M ** D) o13 = cokernel {1} | y x | 1 o13 : R-module, quotient of R</pre> </td></tr> <tr><td><pre>i14 : prune HH_1(C ** N) o14 = cokernel {1} | y x | 1 o14 : R-module, quotient of R</pre> </td></tr> </table> Of course, we can use <a href="___Tor.html" title="Tor module">Tor</a> to get the same result.<table class="examples"><tr><td><pre>i15 : prune Tor_1(M,N) o15 = cokernel {1} | y x | 1 o15 : R-module, quotient of R</pre> </td></tr> </table> </div> </div> </body> </html>