mirror of
https://github.com/Z3Prover/z3
synced 2025-08-07 19:51:22 +00:00
move out sign
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
89c91765f6
commit
d3b105f9f8
15 changed files with 176 additions and 168 deletions
|
@ -273,12 +273,7 @@ namespace qe {
|
|||
split_arith(lits, alits, uflits);
|
||||
auto avars = get_arith_vars(lits);
|
||||
vector<def> defs = arith_project(mdl, avars, alits);
|
||||
#if 0
|
||||
prune_defs(defs);
|
||||
substitute(defs, uflits);
|
||||
#else
|
||||
for (auto const& d : defs) uflits.push_back(m.mk_eq(d.var, d.term));
|
||||
#endif
|
||||
project_euf(mdl, uflits);
|
||||
lits.reset();
|
||||
lits.append(alits);
|
||||
|
@ -309,18 +304,6 @@ namespace qe {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* prune defs to only contain substitutions of terms with leading uninterpreted function.
|
||||
*/
|
||||
void uflia_mbi::prune_defs(vector<def>& defs) {
|
||||
unsigned i = 0;
|
||||
for (auto& d : defs) {
|
||||
if (!is_shared(to_app(d.var)->get_decl())) {
|
||||
defs[i++] = d;
|
||||
}
|
||||
}
|
||||
defs.shrink(i);
|
||||
}
|
||||
|
||||
/**
|
||||
\brief add difference certificates to formula.
|
||||
|
@ -337,20 +320,6 @@ namespace qe {
|
|||
TRACE("qe", tout << "project: " << lits << "\n";);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief substitute solution to arithmetical variables into lits
|
||||
*/
|
||||
void uflia_mbi::substitute(vector<def> const& defs, expr_ref_vector& lits) {
|
||||
TRACE("qe", tout << "start substitute: " << lits << "\n";);
|
||||
for (auto const& def : defs) {
|
||||
expr_safe_replace rep(m);
|
||||
rep.insert(def.var, def.term);
|
||||
rep(lits);
|
||||
TRACE("qe", tout << "substitute: " << def.var << " |-> " << def.term << ": " << lits << "\n";);
|
||||
}
|
||||
IF_VERBOSE(1, verbose_stream() << "substituted: " << lits << "\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief project private symbols.
|
||||
*/
|
||||
|
|
|
@ -122,12 +122,10 @@ namespace qe {
|
|||
void add_dcert(model_ref& mdl, expr_ref_vector& lits);
|
||||
app_ref_vector get_arith_vars(expr_ref_vector const& lits);
|
||||
vector<def> arith_project(model_ref& mdl, app_ref_vector& avars, expr_ref_vector& lits);
|
||||
void substitute(vector<def> const& defs, expr_ref_vector& lits);
|
||||
void project_euf(model_ref& mdl, expr_ref_vector& lits);
|
||||
void split_arith(expr_ref_vector const& lits,
|
||||
expr_ref_vector& alits,
|
||||
expr_ref_vector& uflits);
|
||||
void prune_defs(vector<def>& defs);
|
||||
public:
|
||||
uflia_mbi(solver* s, solver* emptySolver);
|
||||
~uflia_mbi() override {}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue