diff --git a/src/sat/smt/polysat/polysat_core.h b/src/sat/smt/polysat/polysat_core.h index 5262f2bbe..4e9c02118 100644 --- a/src/sat/smt/polysat/polysat_core.h +++ b/src/sat/smt/polysat/polysat_core.h @@ -48,13 +48,13 @@ namespace polysat { lbool value; // value assigned by solver }; solver_interface& s; + mutable scoped_ptr_vector m_pdd; viable m_viable; constraints m_constraints; assignment m_assignment; unsigned m_qhead = 0, m_vqhead = 0; svector m_prop_queue; svector m_constraint_index; // index of constraints - mutable scoped_ptr_vector m_pdd; dependency_vector m_unsat_core; diff --git a/src/sat/smt/polysat_solver.h b/src/sat/smt/polysat_solver.h index f2c80a6e6..acb8f59a8 100644 --- a/src/sat/smt/polysat_solver.h +++ b/src/sat/smt/polysat_solver.h @@ -148,6 +148,7 @@ namespace polysat { public: solver(euf::solver& ctx, theory_id id); + ~solver() override {} void set_lookahead(sat::lookahead* s) override { } void init_search() override {} double get_reward(literal l, sat::ext_constraint_idx idx, sat::literal_occs_fun& occs) const override { return 0; } diff --git a/src/solver/simplifier_solver.cpp b/src/solver/simplifier_solver.cpp index 712c42f45..22c20ae93 100644 --- a/src/solver/simplifier_solver.cpp +++ b/src/solver/simplifier_solver.cpp @@ -289,8 +289,19 @@ public: return m_cached_mc; } - unsigned get_num_assertions() const override { return s->get_num_assertions(); } - expr* get_assertion(unsigned idx) const override { return s->get_assertion(idx); } + unsigned get_num_assertions() const override { + unsigned qhead = m_preprocess_state.qhead(); + unsigned qtail = m_preprocess_state.qtail(); + return s->get_num_assertions() + qtail - qhead; + } + expr* get_assertion(unsigned idx) const override { + unsigned qhead = m_preprocess_state.qhead(); + unsigned qtail = m_preprocess_state.qtail(); + if (idx < qtail - qhead) + return m_fmls.get(idx + qhead).fml(); + idx -= qtail - qhead; + return s->get_assertion(idx); + } std::string reason_unknown() const override { return s->reason_unknown(); } void set_reason_unknown(char const* msg) override { s->set_reason_unknown(msg); } void get_labels(svector& r) override { s->get_labels(r); } @@ -364,9 +375,6 @@ public: expr* congruence_root(expr* e) override { return s->congruence_root(e); } expr* congruence_next(expr* e) override { return s->congruence_next(e); } - std::ostream& display(std::ostream& out, unsigned n, expr* const* assumptions) const override { - return s->display(out, n, assumptions); - } void get_units_core(expr_ref_vector& units) override { s->get_units_core(units); } expr_ref_vector get_trail(unsigned max_level) override { return s->get_trail(max_level); } void get_levels(ptr_vector const& vars, unsigned_vector& depth) override { s->get_levels(vars, depth); }