예제 #1
0
 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;
 }
예제 #2
0
 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;
 }
예제 #3
0
파일: pb2bv_solver.cpp 프로젝트: veleek/z3
 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); }
예제 #4
0
파일: pb2bv_solver.cpp 프로젝트: veleek/z3
 virtual lbool check_sat_core(unsigned num_assumptions, expr * const * assumptions) {
     flush_assertions();
     return m_solver->check_sat(num_assumptions, assumptions);
 }
예제 #5
0
파일: pb2bv_solver.cpp 프로젝트: veleek/z3
 virtual void push_core() {
     flush_assertions();
     m_rewriter.push();
     m_solver->push();
 }
예제 #6
0
파일: pb2bv_solver.cpp 프로젝트: veleek/z3
 virtual expr * get_assertion(unsigned idx) const {
     flush_assertions();
     return m_solver->get_assertion(idx);
 }
예제 #7
0
파일: pb2bv_solver.cpp 프로젝트: veleek/z3
 virtual unsigned get_num_assertions() const {
     flush_assertions();
     return m_solver->get_num_assertions();
 }
예제 #8
0
 void push_core() override {
     flush_assertions();
     m_rewriter.push();
     m_solver->push();
 }
예제 #9
0
 expr * get_assertion(unsigned idx) const override {
     flush_assertions();
     return m_solver->get_assertion(idx);
 }
예제 #10
0
 unsigned get_num_assertions() const override {
     flush_assertions();
     return m_solver->get_num_assertions();
 }
예제 #11
0
 expr_ref_vector cube(expr_ref_vector& vars, unsigned backtrack_level) override { flush_assertions(); return m_solver->cube(vars, backtrack_level); }
예제 #12
0
 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));
 }