From 37904b9e851e928cfa7bd391781811ea3021e6e9 Mon Sep 17 00:00:00 2001 From: Lev Nachmanson Date: Thu, 18 Sep 2025 07:52:13 -0700 Subject: [PATCH] fix the parameter evaluation order Signed-off-by: Lev Nachmanson --- src/ast/rewriter/bool_rewriter.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/ast/rewriter/bool_rewriter.cpp b/src/ast/rewriter/bool_rewriter.cpp index b3c8b888d..3f436522d 100644 --- a/src/ast/rewriter/bool_rewriter.cpp +++ b/src/ast/rewriter/bool_rewriter.cpp @@ -781,9 +781,18 @@ br_status bool_rewriter::mk_eq_core(expr * lhs, expr * rhs, expr_ref & result) { m().is_value(t1) && m().is_value(e1) && m().is_value(t2) && m().is_value(e2)) { expr_ref_vector args(m()); args.push_back(m().mk_or(c1, c2, m().mk_eq(e1, e2))); - args.push_back(m().mk_or(m().mk_not(c1), m().mk_not(c2), m().mk_eq(t1, t2))); - args.push_back(m().mk_or(m().mk_not(c1), c2, m().mk_eq(t1, e2))); - args.push_back(m().mk_or(c1, m().mk_not(c2), m().mk_eq(e1, t2))); + { + auto a = m().mk_not(c1); auto b = m().mk_not(c2); + args.push_back(m().mk_or(a, b, m().mk_eq(t1, t2))); + } + { + auto a = m().mk_not(c1); + args.push_back(m().mk_or(a, c2, m().mk_eq(t1, e2))); + } + { + auto a = m().mk_not(c2); + args.push_back(m().mk_or(c1, a, m().mk_eq(e1, t2))); + } result = m().mk_and(args); return BR_REWRITE_FULL; }