mirror of
https://github.com/Z3Prover/z3
synced 2025-06-19 04:13:38 +00:00
parent
d37ebb8309
commit
fc1321f8b3
1 changed files with 17 additions and 0 deletions
|
@ -1406,6 +1406,21 @@ namespace qe {
|
||||||
m_conjs.add_plugin(p);
|
m_conjs.add_plugin(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool has_uninterpreted(expr* _e) {
|
||||||
|
expr_ref e(_e, m);
|
||||||
|
arith_util au(m);
|
||||||
|
func_decl_ref f_out(m);
|
||||||
|
for (expr* arg : subterms(e)) {
|
||||||
|
if (!is_app(arg)) continue;
|
||||||
|
app* a = to_app(arg);
|
||||||
|
func_decl* f = a->get_decl();
|
||||||
|
if (m.is_considered_uninterpreted(f))
|
||||||
|
return true;
|
||||||
|
if (au.is_considered_uninterpreted(f, a->get_num_args(), a->get_args(), f_out))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void check(unsigned num_vars, app* const* vars,
|
void check(unsigned num_vars, app* const* vars,
|
||||||
expr* assumption, expr_ref& fml, bool get_first,
|
expr* assumption, expr_ref& fml, bool get_first,
|
||||||
|
@ -1445,6 +1460,8 @@ namespace qe {
|
||||||
if (assumption) m_solver.assert_expr(assumption);
|
if (assumption) m_solver.assert_expr(assumption);
|
||||||
bool is_sat = false;
|
bool is_sat = false;
|
||||||
lbool res = l_true;
|
lbool res = l_true;
|
||||||
|
if (has_uninterpreted(m_fml))
|
||||||
|
res = l_undef;
|
||||||
while (res == l_true) {
|
while (res == l_true) {
|
||||||
res = m_solver.check();
|
res = m_solver.check();
|
||||||
if (res == l_true) {
|
if (res == l_true) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue