3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-07-19 10:52:02 +00:00

disable bdd variable elimination

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-03-31 17:05:22 -07:00
parent 55eb11d91b
commit 528dc8a3f8
10 changed files with 58 additions and 32 deletions

View file

@ -101,7 +101,7 @@ namespace sat{
pos_occs.reset();
neg_occs.reset();
literal_vector lits;
add_clauses(b, lits);
add_clauses(v, b, lits);
return true;
}
@ -157,7 +157,7 @@ namespace sat{
return b;
}
void elim_vars::add_clauses(bdd const& b, literal_vector& lits) {
void elim_vars::add_clauses(bool_var v0, bdd const& b, literal_vector& lits) {
if (b.is_true()) {
// no-op
}
@ -167,6 +167,7 @@ namespace sat{
if (simp.cleanup_clause(c))
return;
if (v0 == 39063) IF_VERBOSE(0, verbose_stream() << "bdd: " << c << "\n");
switch (c.size()) {
case 0:
s.set_conflict(justification());
@ -198,10 +199,10 @@ namespace sat{
else {
unsigned v = m_vars[b.var()];
lits.push_back(literal(v, false));
add_clauses(b.lo(), lits);
add_clauses(v0, b.lo(), lits);
lits.pop_back();
lits.push_back(literal(v, true));
add_clauses(b.hi(), lits);
add_clauses(v0, b.hi(), lits);
lits.pop_back();
}
}