3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-05 23:05:46 +00:00

smul no overflow

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-02-16 18:55:07 +02:00
parent 89d6f1c191
commit 8c9835bca6
24 changed files with 376 additions and 63 deletions

View file

@ -54,7 +54,8 @@ namespace polysat {
m_deps[var] = null_dependency;
m_watch[lit.index()].reset();
m_watch[(~lit).index()].reset();
m_free_vars.del_var_eh(var);
if (m_tracked.get(var, false))
m_free_vars.del_var_eh(var);
// TODO: this is disabled for now, since re-using variables for different constraints may be confusing during debugging. Should be enabled later.
// m_unused.push_back(var);
}
@ -98,7 +99,8 @@ namespace polysat {
m_kind[lit.var()] = k;
m_clause[lit.var()] = reason;
m_deps[lit.var()] = dep;
m_free_vars.del_var_eh(lit.var());
if (m_tracked.get(lit.var(), false))
m_free_vars.del_var_eh(lit.var());
}
void bool_var_manager::unassign(sat::literal lit) {
@ -109,7 +111,8 @@ namespace polysat {
m_kind[lit.var()] = kind_t::unassigned;
m_clause[lit.var()] = nullptr;
m_deps[lit.var()] = null_dependency;
m_free_vars.unassign_var_eh(lit.var());
if (m_tracked.get(lit.var(), false))
m_free_vars.unassign_var_eh(lit.var());
}
std::ostream& bool_var_manager::display(std::ostream& out) const {