3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-27 08:28:44 +00:00
Signed-off-by: Miguel Angelo Da Terra Neves <t-mineve@microsoft.com>
This commit is contained in:
Miguel Angelo Da Terra Neves 2017-12-15 14:01:50 -08:00
commit a52fd4c6f2
11 changed files with 97 additions and 22 deletions

View file

@ -2310,14 +2310,42 @@ namespace sat {
elim_eqs elim(m_s);
elim(roots, to_elim);
if (get_config().m_lookahead_simplify_asymm_branch) {
big_asymm_branch();
}
if (get_config().m_lookahead_simplify_bca) {
add_hyper_binary();
}
}
}
m_lookahead.reset();
}
/**
\brief extract binary implication graph from learned binary clauses and use it
for strengthening clauses.
*/
void lookahead::big_asymm_branch() {
unsigned num_lits = m_s.num_vars() * 2;
unsigned idx = 0;
big big;
big.init_adding_edges(m_s.num_vars());
for (auto const& lits : m_binary) {
literal u = get_parent(to_literal(idx++));
if (u == null_literal) continue;
for (literal v : lits) {
v = get_parent(v);
if (v != null_literal)
big.add_edge(u, v);
}
}
big.done_adding_edges();
asymm_branch ab(m_s, m_s.m_params);
ab(big);
}
/**
\brief reduction based on binary implication graph
*/