3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 04:03:39 +00:00
This commit is contained in:
Nikolaj Bjorner 2021-11-25 18:01:35 +01:00
parent 833dd62623
commit d50bfc6a50
4 changed files with 13 additions and 6 deletions

View file

@ -717,6 +717,8 @@ namespace datatype {
todo.pop_back(); todo.pop_back();
continue; continue;
} }
if (!is_declared(s))
return true;
already_found.insert(datatype_name(s), GRAY); already_found.insert(datatype_name(s), GRAY);
def const& d = get_def(s); def const& d = get_def(s);
bool can_process = true; bool can_process = true;

View file

@ -342,9 +342,7 @@ namespace sat {
clause* solver::mk_clause(unsigned num_lits, literal * lits, sat::status st) { clause* solver::mk_clause(unsigned num_lits, literal * lits, sat::status st) {
m_model_is_current = false; m_model_is_current = false;
for (unsigned i = 0; i < num_lits; i++)
VERIFY(!was_eliminated(lits[i]));
DEBUG_CODE({ DEBUG_CODE({
for (unsigned i = 0; i < num_lits; i++) { for (unsigned i = 0; i < num_lits; i++) {
CTRACE("sat", was_eliminated(lits[i]), tout << lits[i] << " was eliminated\n";); CTRACE("sat", was_eliminated(lits[i]), tout << lits[i] << " was eliminated\n";);

View file

@ -22,6 +22,7 @@ namespace sat {
m_solver(m_params, l) m_solver(m_params, l)
{ {
SASSERT(!m_solver.get_config().m_drat); SASSERT(!m_solver.get_config().m_drat);
m_solver.set_incremental(true);
} }
void dual_solver::flush() { void dual_solver::flush() {
@ -104,10 +105,10 @@ namespace sat {
root = ext2lit(clause[0]); root = ext2lit(clause[0]);
else { else {
root = literal(m_solver.mk_var(), false); root = literal(m_solver.mk_var(), false);
m_solver.set_external(root.var());
for (unsigned i = 0; i < sz; ++i) for (unsigned i = 0; i < sz; ++i)
m_solver.mk_clause(root, ~ext2lit(clause[i]), status::input()); m_solver.mk_clause(root, ~ext2lit(clause[i]), status::input());
} }
m_solver.set_external(root.var());
m_roots.push_back(~root); m_roots.push_back(~root);
TRACE("dual", tout << "root: " << ~root << " => " << literal_vector(sz, clause) << "\n";); TRACE("dual", tout << "root: " << ~root << " => " << literal_vector(sz, clause) << "\n";);
} }

View file

@ -23,7 +23,13 @@ Author:
namespace sat { namespace sat {
class dual_solver { class dual_solver {
no_drat_params m_params; class dual_params : public no_drat_params {
public:
dual_params() {
set_bool("core.minimize", false);
}
};
dual_params m_params;
solver m_solver; solver m_solver;
lim_svector<literal> m_units, m_roots; lim_svector<literal> m_units, m_roots;
lim_svector<bool_var> m_tracked_vars; lim_svector<bool_var> m_tracked_vars;