mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
bv and gc of literals (#4692)
* bv and gc of literals Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * overload Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * diseq Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * diseq Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
2d52367368
commit
549753845e
34 changed files with 1480 additions and 854 deletions
|
@ -55,6 +55,25 @@ namespace bv {
|
|||
}
|
||||
}
|
||||
|
||||
void ackerman::used_diseq_eh(euf::theory_var v1, euf::theory_var v2) {
|
||||
if (v1 == v2)
|
||||
return;
|
||||
if (v1 > v2)
|
||||
std::swap(v1, v2);
|
||||
vv* n = m_tmp_vv;
|
||||
n->v1 = v1;
|
||||
n->v2 = v2;
|
||||
vv* other = m_table.insert_if_not_there(n);
|
||||
other->m_count++;
|
||||
if (other->m_count > m_propagate_high_watermark || other->m_glue == 0)
|
||||
s.s().set_should_simplify();
|
||||
vv::push_to_front(m_queue, other);
|
||||
if (other == n) {
|
||||
new_tmp();
|
||||
gc();
|
||||
}
|
||||
}
|
||||
|
||||
void ackerman::update_glue(vv& v) {
|
||||
unsigned sz = s.m_bits[v.v1].size();
|
||||
m_diff_levels.reserve(s.s().scope_lvl() + 1, false);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue