solver * mk_smt_strategic_solver(bool force_tactic) {
    strategic_solver * s = alloc(strategic_solver);
    s->force_tactic(force_tactic);
    s->set_inc_solver(mk_smt_solver());
    init(s);
    return s;
}
static solver* mk_solver_for_logic(ast_manager & m, params_ref const & p, symbol const& logic) {
    bv_rewriter rw(m);
    if (logic == "QF_BV" && rw.hi_div0()) 
        return mk_inc_sat_solver(m, p);
    if (logic == "QF_FD") 
        return mk_fd_solver(m, p);
    return mk_smt_solver(m, p, logic);
}
Exemple #3
0
static solver* mk_solver_for_logic(ast_manager & m, params_ref const & p, symbol const& logic) {
    bv_rewriter rw(m);
    solver* s = mk_special_solver_for_logic(m, p, logic);
    if (!s && logic == "QF_BV" && rw.hi_div0()) 
        s = mk_inc_sat_solver(m, p);
    if (!s) 
        s = mk_smt_solver(m, p, logic);
    return s;
}
Exemple #4
0
 virtual solver * operator()(ast_manager & m, params_ref const & p, bool proofs_enabled, bool models_enabled, bool unsat_core_enabled, symbol const & logic) {
     symbol l;
     if (m_logic != symbol::null)
         l = m_logic;
     else
         l = logic;
     tactic * t = mk_tactic_for_logic(m, p, l);
     return mk_combined_solver(mk_tactic2solver(m, t, p, proofs_enabled, models_enabled, unsat_core_enabled, l),
                               mk_smt_solver(m, p, l),
                               p);
 }