3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-05 21:53:23 +00:00

Change declaration of projector

This commit is contained in:
Arie Gurfinkel 2018-06-14 06:37:09 -07:00
parent bbd917a0e6
commit e355123e37
2 changed files with 235 additions and 238 deletions

View file

@ -540,8 +540,7 @@ namespace qe {
m_cg_table.reset(); m_cg_table.reset();
} }
namespace { class term_graph::projector {
class projector {
term_graph &m_tg; term_graph &m_tg;
ast_manager &m; ast_manager &m;
u_map<expr*> m_term2app; u_map<expr*> m_term2app;
@ -803,7 +802,6 @@ namespace qe {
return res; return res;
} }
}; };
}
void term_graph::set_vars(func_decl_ref_vector const& decls, bool exclude) { void term_graph::set_vars(func_decl_ref_vector const& decls, bool exclude) {
m_is_var.set_decls(decls, exclude); m_is_var.set_decls(decls, exclude);
@ -812,13 +810,13 @@ namespace qe {
expr_ref_vector term_graph::project() { expr_ref_vector term_graph::project() {
// reset solved vars so that they are not considered pure by projector // reset solved vars so that they are not considered pure by projector
m_is_var.reset_solved(); m_is_var.reset_solved();
projector p(*this); term_graph::projector p(*this);
return p.project(); return p.project();
} }
expr_ref_vector term_graph::project(model &mdl) { expr_ref_vector term_graph::project(model &mdl) {
m_is_var.reset_solved(); m_is_var.reset_solved();
projector p(*this); term_graph::projector p(*this);
p.set_model(mdl); p.set_model(mdl);
return p.project(); return p.project();
} }
@ -826,7 +824,7 @@ namespace qe {
expr_ref_vector term_graph::solve() { expr_ref_vector term_graph::solve() {
// reset solved vars so that they are not considered pure by projector // reset solved vars so that they are not considered pure by projector
m_is_var.reset_solved(); m_is_var.reset_solved();
projector p(*this); term_graph::projector p(*this);
return p.solve(); return p.solve();
} }

View file

@ -28,10 +28,9 @@ Notes:
namespace qe { namespace qe {
class term; class term;
namespace {class projector;}
class term_graph { class term_graph {
friend class projector; class projector;
class is_variable_proc : public ::is_variable_proc { class is_variable_proc : public ::is_variable_proc {
bool m_exclude; bool m_exclude;