3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 11:55:51 +00:00

add base support for signed multiplication over/under flow

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-01-30 12:47:28 -08:00
parent 2da3261d8a
commit 0dc204cd4a
5 changed files with 85 additions and 7 deletions

View file

@ -142,6 +142,8 @@ namespace polysat {
void internalize_binary(app* e, std::function<pdd(pdd, pdd)> const& fn);
void internalize_binary(app* e, std::function<expr*(expr*, expr*)> const& fn);
void internalize_binary_predicate(app* e, std::function<signed_constraint(pdd, pdd)> const& fn);
void internalize_smul_no_ovfl(app* e);
void internalize_smul_no_udfl(app* e);
void internalize_par_unary(app* e, std::function<pdd(pdd,unsigned)> const& fn);
void internalize_novfl(app* n, std::function<void(unsigned, expr* const*, expr* const*, expr_ref&)>& fn);
void internalize_interp(app* n, std::function<expr*(expr*, expr*)>& ibin, std::function<expr*(expr*)>& un);