3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-27 08:28:44 +00:00

update for equivalences

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-07-28 10:30:23 -07:00
parent 6dbfdf3e9c
commit b2b2c636f8
5 changed files with 68 additions and 8 deletions

View file

@ -503,6 +503,7 @@ namespace sat {
// arcs are added in the opposite direction of implications.
// So for implications l => u we add arcs u -> l
void lookahead::init_arcs(literal l) {
literal_vector lits;
literal_vector const& succ = m_binary[l.index()];
for (unsigned i = 0; i < succ.size(); ++i) {
literal u = succ[i];
@ -512,6 +513,16 @@ namespace sat {
add_arc( u, l);
}
}
for (auto w : m_watches[l.index()]) {
if (w.is_ext_constraint() && m_s.m_ext->is_extended_binary(w.get_ext_constraint_idx(), lits)) {
for (literal u : lits) {
if (u.index() > l.index() && is_stamped(u)) {
add_arc(~l, ~u);
add_arc( u, l);
}
}
}
}
}
void lookahead::get_scc(literal v) {