3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-24 03:57:51 +00:00

move term graph closer to qe

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-06-09 10:50:40 -07:00 committed by Arie Gurfinkel
parent 0784074b67
commit 2e44850df9
8 changed files with 20 additions and 635 deletions

View file

@ -18,6 +18,7 @@ z3_add_component(qe
qe_mbi.cpp
qe_sat_tactic.cpp
qe_tactic.cpp
qe_term_graph.cpp
qsat.cpp
COMPONENT_DEPENDENCIES
nlsat_tactic

View file

@ -76,22 +76,23 @@ namespace qe {
lits.reset();
m_solver->get_unsat_core(lits);
return mbi_unsat;
case l_true:
case l_true: {
expr_ref_vector fmls(m);
m_solver->get_model(mdl);
lits.reset();
for (unsigned i = 0, sz = mdl->get_num_constants(); i < sz; ++i) {
func_decl* c = mdl->get_constant(i);
if (vars.contains(c)) {
if (m.is_true(mdl->get_const_interp(c))) {
lits.push_back(m.mk_const(c));
}
else {
lits.push_back(m.mk_not(m.mk_const(c)));
}
}
}
// 1. extract formulas from solver
// 2. extract implicant over formulas
// 3. extract equalities or other assignments over the congruence classes
m_solver->get_assertions(fmls);
NOT_IMPLEMENTED_YET();
return mbi_sat;
}
default:
// TBD: if not running solver to completion, then:
// 1. extract unit literals from m_solver.
// 2. run a cc over the units
// 3. extract equalities or other assignments over the congruence classes
// 4. ensure that at least some progress is made over original lits.
return mbi_undef;
}
}