mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
adding argument restriction to mbqi, fix tracking of m_src/m_dst for expr_safe_replace and avoid resetting the cache.
This commit is contained in:
parent
24321e311b
commit
e2fbd05fe7
6 changed files with 159 additions and 58 deletions
|
@ -32,9 +32,11 @@ namespace q {
|
|||
class mbqi {
|
||||
struct q_body {
|
||||
app_ref_vector vars;
|
||||
expr_ref mbody; // body specialized with respect to model
|
||||
expr_ref_vector vbody; // (negation of) body specialized with respect to vars
|
||||
q_body(ast_manager& m) : vars(m), mbody(m), vbody(m) {}
|
||||
expr_ref mbody; // body specialized with respect to model
|
||||
expr_ref_vector vbody; // (negation of) body specialized with respect to vars
|
||||
expr_ref_vector domain_eqs; // additional domain restrictions
|
||||
svector<std::pair<app*, unsigned>> var_args; // (uninterpreted) functions in vbody that contain arguments with variables
|
||||
q_body(ast_manager& m) : vars(m), mbody(m), vbody(m), domain_eqs(m) {}
|
||||
};
|
||||
|
||||
euf::solver& ctx;
|
||||
|
@ -59,6 +61,8 @@ namespace q {
|
|||
expr_ref basic_project(model& mdl, quantifier* q, app_ref_vector& vars);
|
||||
expr_ref solver_project(model& mdl, q_body& qb);
|
||||
expr_ref assign_value(model& mdl, app* v);
|
||||
void restrict_domains(model& mdl, q_body& qb);
|
||||
void extract_var_args(expr* t, q_body& qb);
|
||||
void init_model();
|
||||
void init_solver();
|
||||
mbp::project_plugin* get_plugin(app* var);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue