예제 #1
0
def smt_to_string(constraint, status="unknown", name="benchmark", logic=""):
    v = (z3.Ast * 0)()
    return z3.Z3_benchmark_to_smtlib_string(
        constraint.ctx_ref(), name, logic, status, "",
        0, v, constraint.as_ast()).replace("\n", " ").replace(
            "(check-sat)",
            "").replace("; benchmark (set-info :status unknown)", "").strip()
예제 #2
0
    def back_via_smtlib(self, expr):
        """Back convert a Z3 Expression by translation to SMT-LIB."""
        from six import StringIO
        from pysmt.smtlib.parser import SmtLibZ3Parser
        parser = SmtLibZ3Parser(self.env)

        z3.Z3_set_ast_print_mode(expr.ctx.ref(), z3.Z3_PRINT_SMTLIB2_COMPLIANT)
        s = z3.Z3_benchmark_to_smtlib_string(expr.ctx.ref(), None, None, None,
                                             None, 0, None, expr.ast)
        stream_in = StringIO(s)
        r = parser.get_script(stream_in).get_last_formula(self.mgr)
        key = (askey(expr), None)
        self._back_memoization[key] = r
        return r
예제 #3
0
def toSMT2Benchmark(f, status="unknown", name="benchmark", logic=""):
    v = (z3.Ast * 0)()
    return z3.Z3_benchmark_to_smtlib_string(f.ctx_ref(), name, logic, status,
                                            "", 0, v, f.as_ast())