<Chapter><Heading> Chain complexes</Heading>

<Table Align="|l|" >


<Row>
<Item>
<Index>ChainComplex</Index>
<C>ChainComplex(T)</C>


<P/>
Inputs a  pure cubical complex, or cubical complex, or simplicial complex
 <M>T</M>
and returns the (often very large) cellular chain complex of <M>T</M>.
</Item>
</Row>

<Row>
<Item>
<Index>ChainComplexOfPair</Index>
<C>ChainComplexOfPair(T,S)</C>


<P/>
Inputs a  pure cubical complex or cubical complex <M>T</M> and contractible subcomplex <M>S</M>.
It returns the quotient <M>C(T)/C(S)</M> of cellular chain complexes.
</Item>
</Row>



<Row>
<Item>
<Index> ChevalleyEilenbergComplex</Index>
<C>
ChevalleyEilenbergComplex(X,n)
</C>
<P/>

Inputs either a Lie algebra <M>X=A</M> (over the ring of integers 
<M>Z</M> or over a field <M>K</M>) or a homomorphism of Lie algebras 
<M>X=(f:A
\longrightarrow
B)</M>, 
together with a positive integer <M>n</M>. 
It returns either the first <M>n</M> terms of the 
Chevalley-Eilenberg chain complex <M>C(A)</M>, 
or the induced map of Chevalley-Eilenberg complexes 
<M>C(f):C(A)
\longrightarrow C(B)</M>.
<P/>
(The homology of the Chevalley-Eilenberg complex <M>C(A)</M> is by 
definition the homology of the Lie algebra <M>A</M> 
with trivial coefficients in <M>Z</M> or <M>K</M>).
<P/>
This function was written by <B>Pablo Fernandez Ascariz</B>
</Item>
</Row>





<Row>
<Item>
<Index> LeibnizComplex</Index>
<C> LeibnizComplex(X,n)
</C>
<P/>

Inputs either a Lie or Leibniz algebra <M>X=A</M> (over the ring of 
integers <M>Z</M> or over a field <M>K</M>) 
or a homomorphism of Lie or Leibniz algebras 
<M>X=(f:A
\longrightarrow B)</M>, together with a positive integer 
<M>n</M>. It returns either the first <M>n</M> 
terms of the Leibniz chain complex 
<M>C(A)</M>, or the induced map of Leibniz complexes 
<M>C(f):C(A)
\longrightarrow C(B)</M>.
<P/>
(The Leibniz complex <M>C(A)</M>
was defined by J.-L.Loday. Its homology is by definition the Leibniz 
homology of the algebra <M>A</M>).
<P/>
This function was written by <B>Pablo Fernandez Ascariz</B>
</Item>
</Row>

<Row>
<Item>
<Index>SuspendedChainComplex</Index>
<C>SuspendedChainComplex(C)</C>


<P/>
Inputs a  chain complex
 <M>C</M>
and returns the  chain complex  <M>S</M> defined by applying the degree shift
<M>S_n = C_{n-1}</M> to chain groups and boundary homomorphisms.
</Item>
</Row>

<Row>
<Item>
<Index>ReducedSuspendedChainComplex</Index>
<C>ReducedSuspendedChainComplex(C)</C>


<P/>
Inputs a  chain complex
 <M>C</M>
and returns the  chain complex  <M>S</M> defined by applying the degree shift
<M>S_n = C_{n-1}</M> to chain groups and boundary homomorphisms for all <M>n > 0</M>. The chain complex <M>S</M> has trivial homology in degree <M>0</M> and   <M>S_0=\mathbb Z</M>. 
</Item>
</Row>


<Row>
<Item>
<Index>CoreducedChainComplex</Index>
<C>CoreducedChainComplex(C)</C>
<C>CoreducedChainComplex(C,2)</C>



<P/>
Inputs a  chain complex
 <M>C</M>
and returns a quasi-isomorphic chain complex <M>D</M>. In many cases the complex <M>D</M> should be smaller than <M>C</M>. If an optional second input argument is set equal to 2 then an alternative method is used for
  reducing the size of the chain complex.
</Item>
</Row>

<Row>
<Item>
<Index>TensorProductOfChainComplexes</Index>
<C>TensorProductOfChainComplexes(C,D)</C>

<P/> Inputs two chain complexes <M>C</M> and <M>D</M> of the same characteristic and returns their tensor product as a chain complex.

<P/> This function was written by <B> Le Van Luyen</B>.
</Item>
</Row>


<Row>
<Item>
<Index>LefschetzNumber</Index>
<C>LefschetzNumber(F)</C>



<P/>
Inputs a  chain map 
 <M>F\colon C\rightarrow C</M>
with common source and target. It returns the Lefschetz number of the map
 (that is, the alternating sum of the traces of the homology maps in each degree).
</Item>
</Row>


</Table>
</Chapter>


