In a previous post [Lift chain complex from $\mathbb{F}\_2$ to $\mathbb{Z}$](https://mathoverflow.net/questions/163346/lift-chain-complex-from-mathbbf-2-to-mathbbz) the body of the question mentions that this (lifting a chain complex from $\mathbb Z/2\mathbb Z$ to $\mathbb Z$) is always possible :


"Now, this can always be done (for example, by using the structure theorem for chain complexes over $\mathbb F\_2$)."


What would be a constructive way of doing this?


(Unlike the original post, I'm removing the other two restrictions.)



How to lift a chain complex from $\mathbb{Z}/2\mathbb{Z}$ to $\mathbb{Z}$
I presume “constructive” means a computational algorithm is desired.


Assuming the chain complex $F$ over $\def\Z{{\bf Z}}\Z/2$ is bounded from below, we are going to construct by induction on $n$ a basis $E\_n=A\_n⊔B\_n⊔C\_n$ of $F\_n$ with the following properties:


* $A\_n$ is a basis of exact elements in $F\_n$;
* $A\_n⊔B\_n$ is a basis of closed elements in $F\_n$.


For sufficiently small $n$ we have $F\_n=0$, which gives $A\_n=B\_n=C\_n=∅$.


If $A\_{n-1}$, $B\_{n-1}$, $C\_{n-1}$ have already been constructed,
take $A\_n$ to be the image of $C\_{n-1}$ under the differential.
Then extend $A\_n$ to a basis $A\_n⊔B\_n$ of closed elements in $F\_n$ using Gaussian elimination over $\Z/2$. Finally, extend $A\_n⊔B\_n⊔C\_n$ to a basis of $F\_n$ using Gaussian elimination again.


Now it is easy to lift $F$ to a chain complex over $\Z$: take the same basis elements and construct the corresponding differentials over $\Z$ as matrices with respect to these bases, where all entries are zero except for the entries corresponding to elements of $C\_{n-1}$ mapping to elements of $A\_n$, which we take to be 1.


