 do {
     let s = V.simplex
     let faces = [s(0,1,3),s(1,4,3),s(1,2,4),s(4,2,0),s(4,0,5),s(0,1,5),s(1,2,5),s(2,3,5),s(0,3,2),s(3,4,5)]
-    let H = SimplicialComplex(faces, generate: true).ZHomology()
+    let H = Homology(SimplicialComplex(faces, generate: true), Z.self)
     print("H(RP^2; Z) =", H.detailDescription, "\n")
 }
 

do {
    let s = V.simplex
    let faces = [s(0,1,3), s(1,3,4),s(1,2,4),s(2,4,5),s(2,3,5),s(3,5,0)]
    let H = SimplicialComplex(faces, generate: true).ZHomology()
    print("H(M; Z) =", H.detailDescription, "\n")
}

typealias Z = IntegerNumber
typealias Q = RationalNumber
typealias R = RealNumber
typealias Z_2 = IntQuotientField<_2>

let V = VertexSet(number: 10)

// Δ^3 = D^3
do {
    let Δ = V.simplex(0, 1, 2, 3).allSubsimplices()
    let H = Homology(SimplicialComplex(Δ), Z.self)
    print("H(D^3; Z) =", H.detailDescription, "\n")
}

// ∂Δ^3 = S^2
do {
    let dΔ = V.simplex(0, 1, 2, 3).skeleton(2)
    let H = Homology(SimplicialComplex(dΔ), Z.self)
    print("H(S^2; Z) =", H.detailDescription, "\n")
}

