mirror of
https://github.com/Z3Prover/z3
synced 2025-06-19 20:33:38 +00:00
working on binary drat format
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
8d20310758
commit
08ce6f7ac1
11 changed files with 88 additions and 13 deletions
|
@ -409,14 +409,18 @@ extern "C" {
|
|||
Z3_CATCH_RETURN(nullptr);
|
||||
}
|
||||
|
||||
void Z3_API Z3_solver_get_levels(Z3_context c, Z3_solver s, unsigned sz, Z3_ast literals[], unsigned levels[]) {
|
||||
void Z3_API Z3_solver_get_levels(Z3_context c, Z3_solver s, Z3_ast_vector literals, unsigned sz, unsigned levels[]) {
|
||||
Z3_TRY;
|
||||
LOG_Z3_solver_get_levels(c, s, sz, literals, levels);
|
||||
LOG_Z3_solver_get_levels(c, s, literals, sz, levels);
|
||||
RESET_ERROR_CODE();
|
||||
init_solver(c, s);
|
||||
if (sz != Z3_ast_vector_size(c, literals)) {
|
||||
SET_ERROR_CODE(Z3_IOB, nullptr);
|
||||
return;
|
||||
}
|
||||
ptr_vector<expr> _vars;
|
||||
for (unsigned i = 0; i < sz; ++i) {
|
||||
expr* e = to_expr(literals[i]);
|
||||
expr* e = to_expr(Z3_ast_vector_get(c, literals, i));
|
||||
mk_c(c)->m().is_not(e, e);
|
||||
_vars.push_back(e);
|
||||
}
|
||||
|
|
|
@ -2233,6 +2233,17 @@ namespace z3 {
|
|||
expr_vector assertions() const { Z3_ast_vector r = Z3_solver_get_assertions(ctx(), m_solver); check_error(); return expr_vector(ctx(), r); }
|
||||
expr_vector non_units() const { Z3_ast_vector r = Z3_solver_get_non_units(ctx(), m_solver); check_error(); return expr_vector(ctx(), r); }
|
||||
expr_vector units() const { Z3_ast_vector r = Z3_solver_get_units(ctx(), m_solver); check_error(); return expr_vector(ctx(), r); }
|
||||
expr_vector trail() const { Z3_ast_vector r = Z3_solver_get_trail(ctx(), m_solver); check_error(); return expr_vector(ctx(), r); }
|
||||
expr_vector trail(array<unsigned>& levels) const {
|
||||
Z3_ast_vector r = Z3_solver_get_trail(ctx(), m_solver);
|
||||
check_error();
|
||||
expr_vector result(ctx(), r);
|
||||
unsigned sz = result.size();
|
||||
levels = array<unsigned>(sz);
|
||||
Z3_solver_get_levels(ctx(), m_solver, r, sz, levels.c_ptr());
|
||||
check_error();
|
||||
return result;
|
||||
}
|
||||
expr proof() const { Z3_ast r = Z3_solver_get_proof(ctx(), m_solver); check_error(); return expr(ctx(), r); }
|
||||
friend std::ostream & operator<<(std::ostream & out, solver const & s);
|
||||
|
||||
|
|
|
@ -6727,6 +6727,19 @@ class Solver(Z3PPObject):
|
|||
"""
|
||||
return AstVector(Z3_solver_get_non_units(self.ctx.ref(), self.solver), self.ctx)
|
||||
|
||||
def trail_levels(self):
|
||||
"""Return trail and decision levels of the solver state after a check() call.
|
||||
"""
|
||||
trail = self.trail()
|
||||
levels = (ctypes.c_uint * len(trail))
|
||||
Z3_solver_get_levels(self.ctx.ref(), self.solver, trail.vector, len(trail), levels)
|
||||
return trail, levels
|
||||
|
||||
def trail(self):
|
||||
"""Return trail of the solver state after a check() call.
|
||||
"""
|
||||
return AstVector(Z3_solver_get_trail(self.ctx.ref(), self.solver), self.ctx)
|
||||
|
||||
def statistics(self):
|
||||
"""Return statistics for the last `check()`.
|
||||
|
||||
|
|
|
@ -6232,9 +6232,9 @@ extern "C" {
|
|||
\brief retrieve the decision depth of Boolean literals (variables or their negations).
|
||||
Assumes a check-sat call and no other calls (to extract models) have been invoked.
|
||||
|
||||
def_API('Z3_solver_get_levels', VOID, (_in(CONTEXT), _in(SOLVER), _in(UINT), _in_array(2, AST), _in_array(2, UINT)))
|
||||
def_API('Z3_solver_get_levels', VOID, (_in(CONTEXT), _in(SOLVER), _in(AST_VECTOR), _in(UINT), _in_array(3, UINT)))
|
||||
*/
|
||||
void Z3_API Z3_solver_get_levels(Z3_context c, Z3_solver s, unsigned sz, Z3_ast literals[], unsigned levels[]);
|
||||
void Z3_API Z3_solver_get_levels(Z3_context c, Z3_solver s, Z3_ast_vector literals, unsigned sz, unsigned levels[]);
|
||||
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue