field such as Q or Fp, every calculations involved are linear maps between finite dimensional vector spaces, hence the homology group can be computed directly. More generally, if R is a (computable) Euclidean domain such as Z or Q[t], then the computation is possible by the following method: Proposition (The Smith Normal Form = SNF) If R is a PID, any matrix A can be transformed uniquely (up to units) into the following form: A ∼ diag(1, · · · , 1 p , a1, · · · , aq q , 0, · · · , 0 r ) where a1 ∼ 1 and a1 | · · · | aq. In particular if R is an Euclidean domain, there is an explicit algorithm for computing the form.