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:
parent
4e74c4cdd4
commit
1d199b707b
8 changed files with 82 additions and 19 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue