Description
The maps f1, f2, ... must be defined over the same base ring, and they must form a complex: the target of f(i+1) is the source of fi.
The following example illustrates how chainComplex adjusts the degrees of the modules involved to ensure that sources and targets of the differentials correspond exactly.
i1 : R = ZZ/101[x,y]
o1 = R
o1 : PolynomialRing

i2 : C = chainComplex{matrix{{x,y}},matrix{{x*y},{x^2}}}
1 2 1
o2 = R < R < R
0 1 2
o2 : ChainComplex

We check that that this is a complex:
i3 : C.dd^2 == 0
o3 = true

The homology of this complex:
i4 : HH C
o4 = 0 : cokernel  x y 
1 : subquotient ({1}  y , {1}  xy )
{1}  x  {1}  x2 
2 : image 0
o4 : GradedModule
