3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 11:25:51 +00:00

redo purification

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-10-29 11:06:31 -07:00
parent da0e140e1c
commit 2e684d58d2
5 changed files with 68 additions and 88 deletions

View file

@ -70,7 +70,7 @@ namespace q {
struct eq { bool operator()(indexed_decl const& a, indexed_decl const& b) const { return a.idx == b.idx && a.f == b.f; } };
};
class model_fixer : public quantifier2macro_infos, public mbp::euf_inverter {
class model_fixer : public quantifier2macro_infos {
euf::solver& ctx;
solver& m_qs;
ast_manager& m;
@ -113,8 +113,17 @@ namespace q {
*/
expr_ref restrict_arg(app* t, unsigned i);
expr* invert_app(app* t, expr* value) override;
void invert_arg(app* t, unsigned i, expr* value, expr_ref_vector& lits) override;
/*
* Create inequality constraints for the i'th argument of t based on the current model.
*/
void invert_arg(app* t, unsigned i, expr* value, expr_ref_vector& lits);
/*
* Replace term that contains uninterpreted function over free variables with a ground term.
*/
expr* invert_app(app* t, expr* value);
};
}