A chain complex is a sequence of maps ...⟶^(d_(i + 1)) C_i ⟶^(d_i) C_(i - 1) ⟶^(d_(i - 1)) ..., where the spaces C_i may be Abelian groups or modules. The maps must satisfy d_(i - 1) °d_i = 0. Making the domain implicitly understood, the maps are denoted by d, called the boundary operator or the differential. Chain complexes are an algebraic tool for computing or defining homology and have a variety of applications. A cochain complex is used in the case of cohomology. Elements of C_p are called chains. For each p, the kernel of d_p :C_p->C_(p - 1) is called the group of cycles, Z_p = {c element C_p :d(c) = 0}.