3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 20:18:18 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-08-26 10:41:20 -07:00
parent c21a2fcf9f
commit 1a36d44450

View file

@ -186,6 +186,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
l = sat::literal(v, sign); l = sat::literal(v, sign);
m_solver.set_eliminated(v, false); m_solver.set_eliminated(v, false);
} }
if (root)
m_result_stack.reset();
SASSERT(l != sat::null_literal); SASSERT(l != sat::null_literal);
if (root) if (root)
mk_clause(l); mk_clause(l);
@ -331,7 +333,6 @@ struct goal2sat::imp : public sat::sat_internalizer {
m_cache.insert(t, l); m_cache.insert(t, l);
sat::literal * lits = m_result_stack.end() - num; sat::literal * lits = m_result_stack.end() - num;
// l => /\ lits // l => /\ lits
for (unsigned i = 0; i < num; i++) { for (unsigned i = 0; i < num; i++) {
mk_clause(~l, lits[i]); mk_clause(~l, lits[i]);
@ -481,6 +482,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
sat::literal lit = internalize.internalize(*this, t, sign, root); sat::literal lit = internalize.internalize(*this, t, sign, root);
if (root) if (root)
m_result_stack.reset(); m_result_stack.reset();
else
m_result_stack.shrink(m_result_stack.size() - t->get_num_args());
if (lit == sat::null_literal) if (lit == sat::null_literal)
return; return;
if (root) if (root)
@ -507,6 +510,7 @@ struct goal2sat::imp : public sat::sat_internalizer {
default: default:
UNREACHABLE(); UNREACHABLE();
} }
SASSERT(!root || m_result_stack.empty());
} }
else if (pb.is_pb(t)) { else if (pb.is_pb(t)) {
convert_ba(t, root, sign); convert_ba(t, root, sign);
@ -781,7 +785,6 @@ void sat2goal::mc::flush_smc(sat::solver_core& s, atom2bool_var const& map) {
flush_gmc(); flush_gmc();
} }
void sat2goal::mc::flush_gmc() { void sat2goal::mc::flush_gmc() {
sat::literal_vector updates; sat::literal_vector updates;
m_smc.expand(updates); m_smc.expand(updates);