In mathematics (especially algebraic topology and abstract algebra), **homology** is a certain general procedure to associate a sequence of abelian groups or modules to a given mathematical object.

Table of contents |

2 Examples 3 Cohomology 4 Properties |

The procedure works as follows: Given the object *X*, one first defines a *chain complex* that encodes information about *X*. A chain complex is a sequence of abelian groups or modules *A*_{0}, *A*_{1}, *A*_{2}... connected by homomorphisms *d*_{n} : *A*_{n} ` -> ` *A*_{n-1}, such that the composition of any two consecutive maps is zero: *d*_{n} o *d*_{n+1} = 0 for all *n*. This means that the image of the *n*+1-th map is contained in the kernel of the *n*-th, and we can define the ** n-th homology group of X** to be the factor group (or factor module)

*H*_{n}(*X*) = ker(*d*_{n}) / im(*d*_{n+1}).

Using this example as a model, one can define a simplicial homology for any topological space *X*. We define a chain complex for *X* by taking *A*_{n} to be the free abelian group (or free module) whose generators are all continuous maps from *n*-dimensional simplices into *X*. The homomorphisms *d*_{n} arise from the boundary maps of simplices.

In abstract algebra, one uses homology to define derived functors, for example the Tor functors. Here one starts with some covariant additive functor *F* and some module *X*. The chain complex for *X* is defined as follows: first find a free module *F*_{1} and a surjective homomorphism *p*_{1} : *F*_{1} `->` *X*. Then one finds a free module *F*_{2} and a surjective homomorphism *p*_{2} : *F*_{2} `->` ker(*p*_{1}). Continuing in this fashion, a sequence of free modules *F*_{n} and homorphisms *p*_{n} can be defined. By applying the functor *F* to this sequence, one obtains a chain complex; the homology *H _{n}* of this complex depends only on

Chain complexes form a category: A morphism from the chain complex (*d*_{n} : *A*_{n} `->` *A*_{n-1}) to the chain complex (*e*_{n} : *B*_{n} `->` *B*_{n-1}) is a sequence of homomorphisms *f*_{n} : *A*_{n} `->` *B*_{n} such that *f*_{n-1} o *d*_{n} = *e*_{n-1} o *f*_{n} for all *n*. The *n*-th homology *H*_{n} can be viewed as a covariant functor from the category of chain complexes to the category of abelian groups (or modules).

If the chain complex depends on the object *X* in a covariant manner (meaning that any morphism *X* `->` *Y* induces a morphism from *X*'s chain complex to *Y*'s), then the *H*_{n} are covariant functors from the category that *X* belongs to into the category of abelian groups (or modules).

The only difference between homology and cohomology is that in cohomology the chain complexes depend in a *contravariant* manner on *X*, and that therefore the homology groups (which are called *cohomology groups* in this context and denoted by *H*^{n}) form *contravariant* functors from the category that *X* belongs to into the category of abelian groups or modules.

- χ = ∑ (-1)
^{n}rank(*H*_{n})

Every short exact sequence

- 0
`->`*A*`->`*B*`->`*C*`->`0

- ...
`->`*H*_{n}(*A*)`->`*H*_{n}(*B*)`->`*H*_{n}(*C*)`->`*H*_{n-1}(*A*)`->`*H*_{n-1}(*B*)`->`*H*_{n-1}(*C*)`->`*H*_{n-2}(*A*)`->`...