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; }