3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-17 08:42:15 +00:00

hoist macro-replacer as shared utility, update eliminate-predicates and model reconstruction

This commit is contained in:
Nikolaj Bjorner 2022-11-24 19:45:51 +07:00
parent 5fe2ff84e9
commit caf204ab95
6 changed files with 367 additions and 131 deletions

View file

@ -37,16 +37,17 @@ class model_reconstruction_trail {
vector<dependent_expr> m_removed;
func_decl_ref m_decl;
expr_ref m_def;
expr_dependency_ref m_dep;
bool m_active = true;
entry(ast_manager& m, expr_substitution* s, vector<dependent_expr> const& rem) :
m_subst(s), m_removed(rem), m_decl(m), m_def(m) {}
m_subst(s), m_removed(rem), m_decl(m), m_def(m), m_dep(m) {}
entry(ast_manager& m, func_decl* h) : m_decl(h, m), m_def(m) {}
entry(ast_manager& m, func_decl* h) : m_decl(h, m), m_def(m), m_dep(m) {}
entry(ast_manager& m, func_decl* f, expr* def, vector<dependent_expr> const& rem) :
m_decl(f, m), m_def(def, m), m_removed(rem) {}
entry(ast_manager& m, func_decl* f, expr* def, expr_dependency* dep, vector<dependent_expr> const& rem) :
m_decl(f, m), m_def(def, m), m_removed(rem), m_dep(dep, m) {}
bool is_loose() const { return !m_removed.empty(); }
@ -109,8 +110,8 @@ public:
/**
* add definition
*/
void push(func_decl* f, expr* def, vector<dependent_expr> const& removed) {
m_trail.push_back(alloc(entry, m, f, def, removed));
void push(func_decl* f, expr* def, expr_dependency* dep, vector<dependent_expr> const& removed) {
m_trail.push_back(alloc(entry, m, f, def, dep, removed));
m_trail_stack.push(push_back_vector(m_trail));
}