3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 20:05:51 +00:00

connect mbi

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-09-29 23:51:09 -07:00
parent 4e74c4cdd4
commit 1d199b707b
8 changed files with 82 additions and 19 deletions

View file

@ -23,6 +23,7 @@ Author:
#include "sat/smt/bv_solver.h"
#include "sat/smt/euf_solver.h"
#include "sat/smt/array_solver.h"
#include "sat/smt/q_solver.h"
namespace euf {
@ -67,10 +68,24 @@ namespace euf {
th_solver* solver::expr2solver(expr* e) {
if (is_app(e))
return func_decl2solver(to_app(e)->get_decl());
return func_decl2solver(to_app(e)->get_decl());
if (is_forall(e) || is_exists(e))
return quantifier2solver();
return nullptr;
}
th_solver* solver::quantifier2solver() {
family_id fid = m.mk_family_id(q::solver::name());
auto* ext = m_id2solver.get(fid, nullptr);
if (ext)
return ext;
ext = alloc(q::solver, *this);
ext->set_solver(m_solver);
ext->push_scopes(s().num_scopes());
add_solver(fid, ext);
return ext;
}
th_solver* solver::get_solver(family_id fid, func_decl* f) {
if (fid == null_family_id)
return nullptr;
@ -122,6 +137,8 @@ namespace euf {
void solver::init_search() {
TRACE("before_search", s().display(tout););
for (auto* s : m_solvers)
s->init_search();
}
bool solver::is_external(bool_var v) {