3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-05 15:33:59 +00:00

testing inc_sat

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2014-07-31 22:29:47 -07:00
parent 365f05b41a
commit 39414d8b8d
9 changed files with 200 additions and 95 deletions

View file

@ -90,18 +90,22 @@ struct collect_boolean_interface_proc {
template<typename T>
void operator()(T const & g) {
unsigned sz = g.size();
ptr_vector<expr> deps;
ptr_vector<expr> deps, all_deps;
for (unsigned i = 0; i < sz; i++) {
process(g.form(i));
if (g.dep(i)) {
deps.reset();
m.linearize(g.dep(i), deps);
for (unsigned j = 0; j < deps.size(); ++j) {
quick_for_each_expr(proc, tvisited, deps[j]);
}
all_deps.append(deps);
}
}
for (unsigned i = 0; i < all_deps.size(); i++) {
quick_for_each_expr(proc, tvisited, all_deps[i]);
}
for (unsigned i = 0; i < sz; i++) {
process(g.form(i));
}
}
void operator()(unsigned sz, expr * const * fs) {

View file

@ -394,7 +394,6 @@ struct goal2sat::imp {
expr_ref_vector fmls(m);
for (unsigned idx = 0; idx < size; idx++) {
f = g.form(idx);
TRACE("sat", tout << "Formula: " << mk_pp(f, m) << "\n";);
// Add assumptions.
if (g.dep(idx)) {
deps.reset();
@ -403,21 +402,28 @@ struct goal2sat::imp {
fmls.push_back(f);
for (unsigned i = 0; i < deps.size(); ++i) {
expr * d = deps[i];
expr * d1;
expr * d1 = d;
SASSERT(m.is_bool(d));
if (m.is_not(d, d1)) {
insert_dep(d1, true);
fmls.push_back(d1);
bool sign = m.is_not(d, d1);
insert_dep(d1, sign);
if (d == f) {
goto skip_dep;
}
if (sign) {
d_new = d1;
}
else {
insert_dep(d, false);
fmls.push_back(m.mk_not(d));
d_new = m.mk_not(d);
}
}
fmls.push_back(d_new);
}
f = m.mk_or(fmls.size(), fmls.c_ptr());
TRACE("sat", tout << mk_pp(f, m) << "\n";);
}
TRACE("sat", tout << mk_pp(f, m) << "\n";);
process(f);
skip_dep:
;
}
}