mirror of
https://github.com/Z3Prover/z3
synced 2025-04-30 12:25:51 +00:00
move functionality from qe_util to ast_util
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
5f484c069b
commit
bf5419d44a
25 changed files with 174 additions and 161 deletions
|
@ -143,7 +143,7 @@ namespace pdr {
|
|||
|
||||
expr_ref closure::close_conjunction(expr* fml) {
|
||||
expr_ref_vector fmls(m);
|
||||
qe::flatten_and(fml, fmls);
|
||||
flatten_and(fml, fmls);
|
||||
for (unsigned i = 0; i < fmls.size(); ++i) {
|
||||
fmls[i] = close_fml(fmls[i].get());
|
||||
}
|
||||
|
|
|
@ -349,7 +349,7 @@ namespace pdr {
|
|||
|
||||
void pred_transformer::add_property(expr* lemma, unsigned lvl) {
|
||||
expr_ref_vector lemmas(m);
|
||||
qe::flatten_and(lemma, lemmas);
|
||||
flatten_and(lemma, lemmas);
|
||||
for (unsigned i = 0; i < lemmas.size(); ++i) {
|
||||
expr* lemma_i = lemmas[i].get();
|
||||
if (add_property1(lemma_i, lvl)) {
|
||||
|
@ -594,7 +594,7 @@ namespace pdr {
|
|||
for (unsigned i = ut_size; i < t_size; ++i) {
|
||||
tail.push_back(rule.get_tail(i));
|
||||
}
|
||||
qe::flatten_and(tail);
|
||||
flatten_and(tail);
|
||||
for (unsigned i = 0; i < tail.size(); ++i) {
|
||||
expr_ref tmp(m);
|
||||
var_subst(m, false)(tail[i].get(), var_reprs.size(), (expr*const*)var_reprs.c_ptr(), tmp);
|
||||
|
@ -809,7 +809,7 @@ namespace pdr {
|
|||
ast_manager& m = pt().get_manager();
|
||||
expr_ref_vector conjs(m);
|
||||
obj_map<expr,expr*> model;
|
||||
qe::flatten_and(state(), conjs);
|
||||
flatten_and(state(), conjs);
|
||||
for (unsigned i = 0; i < conjs.size(); ++i) {
|
||||
expr* e = conjs[i].get(), *e1, *e2;
|
||||
if (m.is_eq(e, e1, e2) || m.is_iff(e, e1, e2)) {
|
||||
|
@ -2176,7 +2176,7 @@ namespace pdr {
|
|||
expr_ref_vector mdl(m), forms(m), Phi(m);
|
||||
forms.push_back(T);
|
||||
forms.push_back(phi);
|
||||
qe::flatten_and(forms);
|
||||
flatten_and(forms);
|
||||
ptr_vector<expr> forms1(forms.size(), forms.c_ptr());
|
||||
if (use_model_generalizer) {
|
||||
Phi.append(mev.minimize_model(forms1, M));
|
||||
|
@ -2232,7 +2232,7 @@ namespace pdr {
|
|||
TRACE("pdr", tout << "Projected:\n" << mk_pp(phi1, m) << "\n";);
|
||||
}
|
||||
Phi.reset();
|
||||
qe::flatten_and(phi1, Phi);
|
||||
flatten_and(phi1, Phi);
|
||||
unsigned_vector indices;
|
||||
vector<expr_ref_vector> child_states;
|
||||
child_states.resize(preds.size(), expr_ref_vector(m));
|
||||
|
|
|
@ -449,7 +449,7 @@ namespace pdr {
|
|||
|
||||
expr_set bs;
|
||||
expr_ref_vector blist(m_pr);
|
||||
qe::flatten_and(B, blist);
|
||||
flatten_and(B, blist);
|
||||
for (unsigned i = 0; i < blist.size(); ++i) {
|
||||
bs.insert(blist[i].get());
|
||||
}
|
||||
|
|
|
@ -119,7 +119,7 @@ namespace pdr {
|
|||
if (core.empty()) return;
|
||||
expr_ref A(m), B(qe::mk_and(core)), C(m);
|
||||
expr_ref_vector Bs(m);
|
||||
qe::flatten_or(B, Bs);
|
||||
flatten_or(B, Bs);
|
||||
A = n.pt().get_propagation_formula(m_ctx.get_pred_transformers(), n.level());
|
||||
|
||||
bool change = false;
|
||||
|
@ -138,7 +138,7 @@ namespace pdr {
|
|||
C = qe::mk_or(Bs);
|
||||
TRACE("pdr", tout << "prop:\n" << mk_pp(A,m) << "\ngen:" << mk_pp(B, m) << "\nto: " << mk_pp(C, m) << "\n";);
|
||||
core.reset();
|
||||
qe::flatten_and(C, core);
|
||||
flatten_and(C, core);
|
||||
uses_level = true;
|
||||
}
|
||||
}
|
||||
|
@ -190,7 +190,7 @@ namespace pdr {
|
|||
expr_ref fml2 = n.pt().get_formulas(n.level(), false);
|
||||
fml1_2.push_back(fml1);
|
||||
fml1_2.push_back(0);
|
||||
qe::flatten_and(fml2, fmls);
|
||||
flatten_and(fml2, fmls);
|
||||
for (unsigned i = 0; i < fmls.size(); ++i) {
|
||||
fml2 = m.mk_not(fmls[i].get());
|
||||
fml1_2[1] = fml2;
|
||||
|
|
|
@ -56,7 +56,7 @@ namespace pdr {
|
|||
|
||||
expr_ref inductive_property::fixup_clause(expr* fml) const {
|
||||
expr_ref_vector disjs(m);
|
||||
qe::flatten_or(fml, disjs);
|
||||
flatten_or(fml, disjs);
|
||||
expr_ref result(m);
|
||||
bool_rewriter(m).mk_or(disjs.size(), disjs.c_ptr(), result);
|
||||
return result;
|
||||
|
@ -65,7 +65,7 @@ namespace pdr {
|
|||
expr_ref inductive_property::fixup_clauses(expr* fml) const {
|
||||
expr_ref_vector conjs(m);
|
||||
expr_ref result(m);
|
||||
qe::flatten_and(fml, conjs);
|
||||
flatten_and(fml, conjs);
|
||||
for (unsigned i = 0; i < conjs.size(); ++i) {
|
||||
conjs[i] = fixup_clause(conjs[i].get());
|
||||
}
|
||||
|
@ -237,7 +237,7 @@ namespace pdr {
|
|||
expr_ref manager::mk_not_and(expr_ref_vector const& conjs) {
|
||||
expr_ref result(m), e(m);
|
||||
expr_ref_vector es(conjs);
|
||||
qe::flatten_and(es);
|
||||
flatten_and(es);
|
||||
for (unsigned i = 0; i < es.size(); ++i) {
|
||||
m_brwr.mk_not(es[i].get(), e);
|
||||
es[i] = e;
|
||||
|
|
|
@ -76,7 +76,7 @@ namespace pdr {
|
|||
}
|
||||
|
||||
void mk_safe(expr_ref_vector& conjs) {
|
||||
qe::flatten_and(conjs);
|
||||
flatten_and(conjs);
|
||||
expand_literals(conjs);
|
||||
for (unsigned i = 0; i < conjs.size(); ++i) {
|
||||
expr * lit = conjs[i].get();
|
||||
|
|
|
@ -93,7 +93,7 @@ namespace pdr {
|
|||
void reduce_disequalities(model& model, unsigned threshold, expr_ref& fml) {
|
||||
ast_manager& m = fml.get_manager();
|
||||
expr_ref_vector conjs(m);
|
||||
qe::flatten_and(fml, conjs);
|
||||
flatten_and(fml, conjs);
|
||||
obj_map<expr, unsigned> diseqs;
|
||||
expr* n, *lhs, *rhs;
|
||||
for (unsigned i = 0; i < conjs.size(); ++i) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue