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

deal with regression break

This commit is contained in:
Nikolaj Bjorner 2020-10-12 12:26:50 -07:00
parent 4f0c743e2b
commit b80ba24ba6
4 changed files with 176 additions and 4 deletions

View file

@ -18,6 +18,7 @@ Revision History:
--*/
#pragma once
#include "ast/ast_pp.h"
#include "smt/smt_enode.h"
#include "smt/smt_quantifier.h"
#include "util/obj_hashtable.h"
@ -527,7 +528,7 @@ namespace smt {
ast_manager& m = get_manager();
if (lhs->get_id() > rhs->get_id())
std::swap(lhs, rhs);
if (m.are_distinct(lhs, rhs))
if (m.are_distinct(lhs, rhs))
return m.mk_false();
if (m.are_equal(lhs, rhs))
return m.mk_true();

View file

@ -279,9 +279,10 @@ namespace smt {
if (opt_VerifyFinalCheckProgress) {
finalCheckProgressIndicator = true;
}
if (get_manager().is_true(_e)) return;
ast_manager& m = get_manager();
SASSERT(!m.is_true(_e));
if (m.is_true(_e)) return;
TRACE("str", tout << "asserting " << mk_ismt2_pp(_e, m) << std::endl;);
expr_ref e(_e, m);
//th_rewriter rw(m);
@ -1974,7 +1975,7 @@ namespace smt {
// inconsistency check: value
if (!can_two_nodes_eq(eqc_nn1, eqc_nn2)) {
TRACE("str", tout << "inconsistency detected: " << mk_pp(eqc_nn1, m) << " cannot be equal to " << mk_pp(eqc_nn2, m) << std::endl;);
expr_ref to_assert(mk_not(m, ctx.mk_eq_atom(eqc_nn1, eqc_nn2)), m);
expr_ref to_assert(mk_not(m, m.mk_eq(eqc_nn1, eqc_nn2)), m);
assert_axiom(to_assert);
// this shouldn't use the integer theory at all, so we don't allow the option of quick-return
return false;