mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 11:55:51 +00:00
parent
000e485794
commit
68e4ed3c9c
5 changed files with 85 additions and 11 deletions
|
@ -666,7 +666,7 @@ namespace qe {
|
|||
|
||||
// expr -> nlsat::solver
|
||||
|
||||
void hoist(expr_ref& fml) {
|
||||
bool hoist(expr_ref& fml) {
|
||||
expr_ref_vector paxioms(m);
|
||||
ackermanize_div(fml, paxioms);
|
||||
quantifier_hoister hoist(m);
|
||||
|
@ -674,7 +674,6 @@ namespace qe {
|
|||
app_ref_vector vars(m);
|
||||
bool is_forall = false;
|
||||
pred_abs abs(m);
|
||||
|
||||
expr_ref fml_a(m.mk_and(fml, mk_and(paxioms)), m);
|
||||
abs.get_free_vars(fml_a, vars);
|
||||
insert_set(m_free_vars, vars);
|
||||
|
@ -752,6 +751,7 @@ namespace qe {
|
|||
}
|
||||
}
|
||||
TRACE("qe", tout << fml << "\n";);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -836,7 +836,10 @@ namespace qe {
|
|||
}
|
||||
reset();
|
||||
TRACE("qe", tout << fml << "\n";);
|
||||
hoist(fml);
|
||||
if (!hoist(fml)) {
|
||||
result.push_back(in.get());
|
||||
return;
|
||||
}
|
||||
TRACE("qe", tout << "ex: " << fml << "\n";);
|
||||
lbool is_sat = check_sat();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue