mirror of
https://github.com/Z3Prover/z3
synced 2025-04-14 04:48:45 +00:00
fix incorrect assertion when checking signs of literals, exposed by mitls regressions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
33e7dccd42
commit
c68c56b0e7
|
@ -3773,15 +3773,16 @@ namespace smt {
|
|||
#ifdef Z3DEBUG
|
||||
for (unsigned i = 0; i < num_lits; i++) {
|
||||
literal l = lits[i];
|
||||
if (m_manager.is_not(expr_lits.get(i))) {
|
||||
expr* real_atom;
|
||||
if (expr_signs[i] != l.sign()) {
|
||||
|
||||
VERIFY(m_manager.is_not(expr_lits.get(i), real_atom));
|
||||
// the sign must have flipped when internalizing
|
||||
expr * real_atom = to_app(expr_lits.get(i))->get_arg(0);
|
||||
CTRACE("resolve_conflict_bug", real_atom != bool_var2expr(l.var()), tout << mk_pp(real_atom, m_manager) << "\n" << mk_pp(bool_var2expr(l.var()), m_manager) << "\n";);
|
||||
SASSERT(real_atom == bool_var2expr(l.var()));
|
||||
SASSERT(expr_signs[i] != l.sign());
|
||||
}
|
||||
else {
|
||||
SASSERT(expr_lits.get(i) == bool_var2expr(l.var()));
|
||||
SASSERT(expr_signs[i] == l.sign());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -840,7 +840,7 @@ namespace smt {
|
|||
}
|
||||
#endif
|
||||
TRACE("mk_bool_var", tout << "creating boolean variable: " << v << " for:\n" << mk_pp(n, m_manager) << "\n";);
|
||||
TRACE("mk_var_bug", tout << "mk_bool: " << v << "\n";);
|
||||
TRACE("mk_var_bug", tout << "mk_bool: " << v << "\n";);
|
||||
set_bool_var(id, v);
|
||||
m_bdata.reserve(v+1);
|
||||
m_activity.reserve(v+1);
|
||||
|
|
Loading…
Reference in a new issue