3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-21 18:50:26 +00:00

add facility to solve QF_NRA + QF_UF(and other theories) in joint solver to allow broader use of QF_NRA core

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2015-05-10 09:42:11 -07:00
parent c807ad0927
commit f5c048775b
2 changed files with 34 additions and 4 deletions

View file

@ -130,9 +130,22 @@ public:
r = m.mk_fresh_const(0, u().mk_real());
m_new_reals.push_back(to_app(r));
m_interface_cache.insert(arg, r);
expr_ref eq(m);
eq = m.mk_eq(r, arg);
if (is_real_expression(arg)) {
m_nl_cnstrs.push_back(eq);
m_nl_cnstr_prs.push_back(m.mk_oeq(r, arg));
}
else {
m_owner.m_solver->assert_expr(eq);
}
return r;
}
bool is_real_expression(expr* e) {
return is_app(e) && (to_app(e)->get_family_id() == u().get_family_id());
}
void mk_interface_bool(func_decl * f, unsigned num, expr* const* args, expr_ref& result) {
expr_ref old_pred(m.mk_app(f, num, args), m);
polarity_t pol;