3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 17:45:32 +00:00

add definitions for under-specified cases of arithmetic operators #2663 #2676 #2679

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-11-06 18:24:22 +01:00
parent 6cf7d8e523
commit 1e0c1cefd6
13 changed files with 59 additions and 20 deletions

View file

@ -795,6 +795,15 @@ struct purify_arith_proc {
SASSERT(is_uninterp_const(v));
fmc->hide(v->get_decl());
}
if (!divs.empty()) {
expr_ref body(u().mk_real(0), m());
expr_ref v0(m().mk_var(0, u().mk_real()), m());
expr_ref v1(m().mk_var(1, u().mk_real()), m());
for (auto const& p : divs) {
body = m().mk_ite(m().mk_and(m().mk_eq(v0, p.x), m().mk_eq(v1, p.y)), p.d, body);
}
fmc->add(u().mk_div0(), body);
}
}
if (produce_models && !m_sin_cos.empty()) {
generic_model_converter* emc = alloc(generic_model_converter, m(), "purify_sin_cos");