         return sequence.solve()
     }
     
-    public func assertExactness(column i: Int, degree n: Int) {
-        let k = seqIndex(i, n)
+    public func assertExactness(_ n: Int, _ i: Int) {
+        let k = seqIndex(n, i)
         sequence.assertExactness(at: k)
     }
     

    }
    
    @discardableResult
    public mutating func solve(column i: Int, degree n: Int) -> Object? {
        sequence.solve(seqIndex(i, n))
        return self[i, n]
    }
    
    @discardableResult
    public mutating func solve(column i: Int) -> [Object?] {
        return (bottomDegree ... topDegree).map { n in
            self.solve(column: i, degree: n)
        }
    }
    

            : (bottomDegree ... topDegree).toArray()
    }
    
    public func isZeroMap(_ n: Int, _ i: Int) -> Bool {
        return sequence.isZeroMap(seqIndex(n, i))
    }
    
    public func isInjective(_ n: Int, _ i: Int) -> Bool {
        return sequence.isInjective(seqIndex(n, i))
    }
    
    public func isSurjective(_ n: Int, _ i: Int) -> Bool {
        return sequence.isSurjective(seqIndex(n, i))
    }
    
    public func isIsomorphic(_ n: Int, _ i: Int) -> Bool {
        return sequence.isIsomorphic(seqIndex(n, i))
    }

    public mutating func fill(_ n: Int, _ i: Int) {
        assert((0 ..< 3).contains(i))

        let k = seqIndex(n, i)
        
        sequence[k] = h[i][n]

