mirror of
https://github.com/Z3Prover/z3
synced 2025-07-19 10:52:02 +00:00
bv fixes and tuning (#4703)
* heap size information * bv tuning * fix #4701 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * throw on set-has-size #4700 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ba5c9c3883
commit
b7ec4489a6
21 changed files with 339 additions and 169 deletions
|
@ -31,6 +31,14 @@ namespace euf {
|
|||
}
|
||||
|
||||
sat::literal solver::internalize(expr* e, bool sign, bool root, bool redundant) {
|
||||
euf::enode* n = m_egraph.find(e);
|
||||
if (n) {
|
||||
if (m.is_bool(e)) {
|
||||
VERIFY(!s().was_eliminated(n->bool_var()));
|
||||
return literal(n->bool_var(), sign);
|
||||
}
|
||||
return sat::null_literal;
|
||||
}
|
||||
if (si.is_bool_op(e))
|
||||
return attach_lit(si.internalize(e, redundant), e);
|
||||
if (auto* ext = expr2solver(e))
|
||||
|
@ -117,9 +125,13 @@ namespace euf {
|
|||
s().mk_clause(lit, ~lit2, sat::status::th(m_is_redundant, m.get_basic_family_id()));
|
||||
lit = lit2;
|
||||
}
|
||||
|
||||
m_var2expr.reserve(v + 1, nullptr);
|
||||
if (m_var2expr[v])
|
||||
if (m_var2expr[v]) {
|
||||
SASSERT(m_egraph.find(e));
|
||||
SASSERT(m_egraph.find(e)->bool_var() == v);
|
||||
return lit;
|
||||
}
|
||||
m_var2expr[v] = e;
|
||||
m_var_trail.push_back(v);
|
||||
enode* n = m_egraph.find(e);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue