solver* translate(ast_manager& dst_m, params_ref const& p) override { flush_assertions(); solver* result = alloc(pb2bv_solver, dst_m, p, m_solver->translate(dst_m, p)); model_converter_ref mc = external_model_converter(); if (mc.get()) { ast_translation tr(m, dst_m); result->set_model_converter(mc->translate(tr)); } return result; }
solver* translate(ast_manager& dst_m, params_ref const& p) override { flush_assertions(); bounded_int2bv_solver* result = alloc(bounded_int2bv_solver, dst_m, p, m_solver->translate(dst_m, p)); ast_translation tr(m, dst_m); for (auto& kv : m_int2bv) result->m_int2bv.insert(tr(kv.m_key), tr(kv.m_value)); for (auto& kv : m_bv2int) result->m_bv2int.insert(tr(kv.m_key), tr(kv.m_value)); for (auto& kv : m_bv2offset) result->m_bv2offset.insert(tr(kv.m_key), kv.m_value); for (func_decl* f : m_bv_fns) result->m_bv_fns.push_back(tr(f)); for (func_decl* f : m_int_fns) result->m_int_fns.push_back(tr(f)); for (bound_manager* b : m_bounds) result->m_bounds.push_back(b->translate(dst_m)); model_converter_ref mc = external_model_converter(); if (mc) { ast_translation tr(m, dst_m); result->set_model_converter(mc->translate(tr)); } return result; }
virtual lbool get_consequences_core(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences) { flush_assertions(); return m_solver->get_consequences(asms, vars, consequences); }
virtual lbool check_sat_core(unsigned num_assumptions, expr * const * assumptions) { flush_assertions(); return m_solver->check_sat(num_assumptions, assumptions); }
virtual void push_core() { flush_assertions(); m_rewriter.push(); m_solver->push(); }
virtual expr * get_assertion(unsigned idx) const { flush_assertions(); return m_solver->get_assertion(idx); }
virtual unsigned get_num_assertions() const { flush_assertions(); return m_solver->get_num_assertions(); }
void push_core() override { flush_assertions(); m_rewriter.push(); m_solver->push(); }
expr * get_assertion(unsigned idx) const override { flush_assertions(); return m_solver->get_assertion(idx); }
unsigned get_num_assertions() const override { flush_assertions(); return m_solver->get_num_assertions(); }
expr_ref_vector cube(expr_ref_vector& vars, unsigned backtrack_level) override { flush_assertions(); return m_solver->cube(vars, backtrack_level); }
void push_core() override { flush_assertions(); m_solver->push(); m_bv_fns_lim.push_back(m_bv_fns.size()); m_bounds.push_back(alloc(bound_manager, m)); }