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

fixup bdd reordering, assertions and perf

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-10-18 19:32:49 -07:00
parent 553bf74f47
commit 636f740b1a
4 changed files with 52 additions and 79 deletions

View file

@ -27,6 +27,8 @@ namespace sat{
m_mark_lim = 0;
m_max_literals = 11;
m_miss = 0;
m_hit1 = 0;
m_hit2 = 0;
}
bool elim_vars::operator()(bool_var v) {
@ -57,29 +59,20 @@ namespace sat{
bdd b1 = elim_var(v);
double sz1 = b1.cnf_size();
if (sz1 > 2*clause_size) {
++m_miss;
return false;
}
if (sz1 <= clause_size) {
++m_hit1;
return elim_var(v, b1);
}
m_vars.reverse();
bdd b2 = elim_var(v);
double sz2 = b2.cnf_size();
if (sz2 <= clause_size) {
return elim_var(v, b2);
}
shuffle_vars();
bdd b3 = elim_var(v);
double sz3 = b3.cnf_size();
if (sz3 <= clause_size) {
return elim_var(v, b3);
}
#if 0
m.try_cnf_reorder(b3);
sz3 = b3.cnf_size();
if (sz3 <= clause_size) ++m_miss;
#endif
m.try_cnf_reorder(b1);
sz1 = b1.cnf_size();
if (sz1 <= clause_size) {
++m_hit2;
return elim_var(v, b1);
}
++m_miss;
return false;
}