3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-11-05 22:06:03 +00:00

fix some argument-evaluation non-determinism, and mark the rest

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2025-10-28 18:01:44 -07:00
parent efd5d04af5
commit 51f6dfeb83
62 changed files with 765 additions and 120 deletions

View file

@ -2589,6 +2589,7 @@ public:
if (valy >= sz || valy == 0)
return true;
unsigned k = valy.get_unsigned();
//non-deterministic order no change: too complex
sat::literal signx = mk_literal(a.mk_ge(x, a.mk_int(N/2)));
sat::literal eq;
expr* xdiv2k;
@ -3371,7 +3372,13 @@ public:
tout << " ==> " << pp(x) << " = " << pp(y) << "\n";
);
std::function<expr*(void)> fn = [&]() { return m.mk_eq(x->get_expr(), y->get_expr()); };
std::function<expr*(void)> fn = [&]() { //non-deterministic order change start
{
auto get_expr_1 = x->get_expr();
auto get_expr_2 = y->get_expr();
return m.mk_eq(get_expr_1, get_expr_2);
}
//non-deterministic order change end };
scoped_trace_stream _sts(th, fn);
if (params().m_arith_validate)
@ -3871,6 +3878,7 @@ public:
flet<bool> _svalid(s_validating, true);
context nctx(m, ctx().get_fparams(), ctx().get_params());
add_background(nctx);
//non-deterministic order no change: too complex
expr_ref neq(m.mk_not(m.mk_eq(x->get_expr(), y->get_expr())), m);
nctx.assert_expr(neq);
cancel_eh<reslimit> eh(m.limit());