         let bs = C(s).boundary()
         let f_bs = f(bs)
         
-        log("\(step)\t\(s): f∂ = \(f_bs)")
+        log("\(step)\t\(s) -> \(f_bs)")
         log("")
         
         if isZero(f_bs) {

        
        doneCells.insert(s)
        
        log("\tgenerators: \(generators)")
        if !relations.isEmpty {
            log("relations: \(relations)")
        }
        log("")
    }
    
    public func assertChainContraction() {
        for s in doneCells {
            let a1 = g(f(s)) - C(s)
            let a2 = h(C(s).boundary()) + h(s).boundary()

        }
        
        log("assertion complete.")
        log("")
    }
    
    internal class Node: Hashable, CustomStringConvertible {
