Skip to content

Commit

Permalink
minor simplification of terms during internalization.
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolajBjorner committed Dec 3, 2023
1 parent f06e07a commit 3672538
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions src/sat/smt/arith_internalize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,13 @@ namespace arith {
internalize_term(n->get_arg(1)->get_expr());
}

expr* solver::mk_sub(expr* x, expr* y) {
rational r;
if (a.is_numeral(y, r) && r == 0)
return x;
return a.mk_sub(x, y);
}

bool solver::internalize_atom(expr* atom) {
TRACE("arith", tout << mk_pp(atom, m) << "\n";);
expr* n1, *n2;
Expand Down Expand Up @@ -319,26 +326,26 @@ namespace arith {
k = lp_api::upper_t;
}
else if (a.is_le(atom, n1, n2)) {
expr_ref n3(a.mk_sub(n1, n2), m);
expr_ref n3(mk_sub(n1, n2), m);
v = internalize_def(n3);
k = lp_api::upper_t;
r = 0;
}
else if (a.is_ge(atom, n1, n2)) {
expr_ref n3(a.mk_sub(n1, n2), m);
expr_ref n3(mk_sub(n1, n2), m);
v = internalize_def(n3);
k = lp_api::lower_t;
r = 0;
}
else if (a.is_lt(atom, n1, n2)) {
expr_ref n3(a.mk_sub(n1, n2), m);
expr_ref n3(mk_sub(n1, n2), m);
v = internalize_def(n3);
k = lp_api::lower_t;
r = 0;
lit.neg();
}
else if (a.is_gt(atom, n1, n2)) {
expr_ref n3(a.mk_sub(n1, n2), m);
else if (a.is_gt(atom, n1, n2)) {
expr_ref n3(mk_sub(n1, n2), m);
v = internalize_def(n3);
k = lp_api::upper_t;
r = 0;
Expand Down

0 comments on commit 3672538

Please sign in to comment.