ChainComplex
ChainComplex -- the class of all chain complexes.
If C is a chain complex, then C_i will produce 
     the i-th module in the complex, and C.dd_i will 
     produce the differential whose source is C_i.
A new chain complex can be made with C = new ChainComplex.  This will
     automatically initialize C.dd, in which the differentials are stored.
     The modules can be installed with statements like C#i=M and the 
     differentials can be installed with statements like C.dd#i=d.
See also ChainComplexMap for a discussion of maps between
     chain complexes.  (The boundary map C.dd is regarded as one.)
Here are some functions for producing or manipulating chain complexes.
The default display for a chain complex shows the modules and
     the stage at which they appear.
  
    | i1 : R = ZZ/101[x,y,z]
 o1 = R
 
 o1 : PolynomialRing
 | 
  
    | i2 : C = resolution cokernel matrix {{x,y,z}}
 1      3      3      1
 o2 = R  <-- R  <-- R  <-- R
 
 0      1      2      3
 
 o2 : ChainComplex
 | 
In order to see the matrices of the differentials, examine 'C.dd'.
  
    | i3 : C.dd
 1
 o3 = -1 : 0 <----- R  : 0
 0
 
 1                     3
 0 : R  <----------------- R  : 1
 {0} | x y z |
 
 3                        3
 1 : R  <-------------------- R  : 2
 {1} | -y -z 0  |
 {1} | x  0  -z |
 {1} | 0  x  y  |
 
 3                  1
 2 : R  <-------------- R  : 3
 {2} | z  |
 {2} | -y |
 {2} | x  |
 
 o3 : ChainComplexMap
 | 
See also Resolution and dd.




