mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
fix assertions reported by Christoph
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
d67b5226f0
commit
23a74b3c26
4 changed files with 21 additions and 4 deletions
|
@ -6010,6 +6010,22 @@ class Solver(Z3PPObject):
|
|||
"""
|
||||
return Z3_solver_to_string(self.ctx.ref(), self.solver)
|
||||
|
||||
def to_smt2(self):
|
||||
"""return SMTLIB2 formatted benchmark for solver's assertions"""
|
||||
es = self.assertions()
|
||||
sz = len(es)
|
||||
sz1 = sz
|
||||
if sz1 > 0:
|
||||
sz1 -= 1
|
||||
v = (Ast * sz1)()
|
||||
for i in range(sz1):
|
||||
v[i] = es[i].as_ast()
|
||||
if sz > 0:
|
||||
e = es[sz1].as_ast()
|
||||
else:
|
||||
e = BoolVal(True, self.ctx).as_ast()
|
||||
return Z3_benchmark_to_smtlib_string(self.ctx.ref(), "benchmark generated from python API", "", "unknown", "", sz1, v, e)
|
||||
|
||||
def SolverFor(logic, ctx=None):
|
||||
"""Create a solver customized for the given logic.
|
||||
|
||||
|
|
|
@ -90,7 +90,6 @@ namespace opt {
|
|||
m_solver->get_labels(r);
|
||||
}
|
||||
virtual void set_cancel(bool f) {
|
||||
std::cout << "set cancel\n";
|
||||
m_solver->set_cancel(f);
|
||||
m_pb2bv.set_cancel(f);
|
||||
#pragma omp critical (sls_solver)
|
||||
|
|
|
@ -301,6 +301,7 @@ namespace smt {
|
|||
clause const& cls = clauses[i];
|
||||
for (unsigned j = 0; j < cls.m_lits.size(); ++j) {
|
||||
literal lit = cls.m_lits[j];
|
||||
if (occ.size() <= static_cast<unsigned>(lit.var())) occ.resize(lit.var() + 1);
|
||||
occ[lit.var()].push_back(i);
|
||||
}
|
||||
}
|
||||
|
@ -314,6 +315,10 @@ namespace smt {
|
|||
m_soft_false.reset();
|
||||
m_soft_occ.reset();
|
||||
m_penalty.reset();
|
||||
for (unsigned i = 0; i <= m_var2decl.size(); ++i) {
|
||||
m_soft_occ.push_back(unsigned_vector());
|
||||
m_hard_occ.push_back(unsigned_vector());
|
||||
}
|
||||
|
||||
// initialize the occurs vectors.
|
||||
init_occ(m_clauses, m_hard_occ);
|
||||
|
@ -443,7 +448,6 @@ namespace smt {
|
|||
}
|
||||
|
||||
int flip(literal l) {
|
||||
SASSERT(get_value(l));
|
||||
m_assignment[l.var()] = !m_assignment[l.var()];
|
||||
int break_count = 0;
|
||||
unsigned_vector const& occh = m_hard_occ[l.var()];
|
||||
|
@ -484,7 +488,6 @@ namespace smt {
|
|||
}
|
||||
}
|
||||
|
||||
SASSERT(get_value(~l));
|
||||
TRACE("opt", tout << "flip: " << l << " num false: " << m_hard_false.num_elems()
|
||||
<< " penalty: " << m_penalty << " break count: " << break_count << "\n";);
|
||||
return break_count;
|
||||
|
|
|
@ -162,7 +162,6 @@ namespace opt {
|
|||
|
||||
void enable_sls() {
|
||||
if (m_enable_sls && probe_bv()) {
|
||||
std::cout << "SLS enabled\n";
|
||||
m_params.set_uint("restarts", 20);
|
||||
m_s = alloc(sls_solver, m, m_s.get(), m_soft, m_weights, m_params);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue