mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
adding dt-solver (#4739)
* adding dt-solver Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * dt Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * move mbp to self-contained module Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * files Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * Create CMakeLists.txt * dt Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * rename to bool_var2expr to indicate type class * mbp * na
This commit is contained in:
parent
b77c57451f
commit
2f756da294
62 changed files with 2309 additions and 1257 deletions
|
@ -94,7 +94,8 @@ namespace q {
|
|||
init_solver();
|
||||
::solver::scoped_push _sp(*m_solver);
|
||||
expr_ref_vector vars(m);
|
||||
expr_ref body = specialize(q, vars);
|
||||
quantifier* q_flat = qs.flatten(q);
|
||||
expr_ref body = specialize(q_flat, vars);
|
||||
m_solver->assert_expr(body);
|
||||
lbool r = m_solver->check_sat(0, nullptr);
|
||||
if (r == l_undef)
|
||||
|
@ -105,17 +106,17 @@ namespace q {
|
|||
m_solver->get_model(mdl0);
|
||||
expr_ref proj(m);
|
||||
auto add_projection = [&](model& mdl, bool inv) {
|
||||
proj = project(mdl, q, vars, inv);
|
||||
proj = project(mdl, q_flat, vars, inv);
|
||||
if (!proj)
|
||||
return;
|
||||
if (is_forall(q))
|
||||
qs.add_clause(~ctx.expr2literal(q), ctx.b_internalize(proj));
|
||||
else
|
||||
qs.add_clause(ctx.expr2literal(q), ~ctx.b_internalize(proj));
|
||||
qs.add_clause(ctx.expr2literal(q), ~ctx.b_internalize(proj));
|
||||
};
|
||||
bool added = false;
|
||||
#if 0
|
||||
m_model_finder.restrict_instantiations(*m_solver, *mdl0, q, vars);
|
||||
m_model_finder.restrict_instantiations(*m_solver, *mdl0, q_flat, vars);
|
||||
for (unsigned i = 0; i < m_max_cex && l_true == m_solver->check_sat(0, nullptr); ++i) {
|
||||
m_solver->get_model(mdl1);
|
||||
add_projection(*mdl1, true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue