3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-08 20:21:23 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-04-14 06:30:54 -07:00
parent 0f697830fc
commit 387964f508
7 changed files with 91 additions and 50 deletions

View file

@ -97,6 +97,7 @@ namespace smt {
// book-keeping for depth of predicates
expr_ref_vector m_disabled_guards;
expr_ref_vector m_enabled_guards;
obj_map<expr, expr_ref_vector*> m_guard2pending;
obj_map<expr, unsigned> m_pred_depth;
expr_ref_vector m_preds;
unsigned_vector m_preds_lim;
@ -104,7 +105,8 @@ namespace smt {
ptr_vector<case_expansion> m_q_case_expand;
ptr_vector<body_expansion> m_q_body_expand;
vector<literal_vector> m_q_clauses;
vector<literal_vector> m_q_clauses;
ptr_vector<expr> m_q_guards;
bool is_enabled_guard(expr* guard) { expr_ref ng(m.mk_not(guard), m); return m_enabled_guards.contains(ng); }
bool is_disabled_guard(expr* guard) { return m_disabled_guards.contains(guard); }
@ -116,6 +118,8 @@ namespace smt {
bool is_defined(enode * e) const { return is_defined(e->get_owner()); }
bool is_case_pred(enode * e) const { return is_case_pred(e->get_owner()); }
void activate_guard(expr* guard, expr_ref_vector const& guards);
void reset_queues();
expr_ref apply_args(unsigned depth, recfun::vars const & vars, ptr_vector<expr> const & args, expr * e); //!< substitute variables by args
void assert_macro_axiom(case_expansion & e);
@ -123,7 +127,7 @@ namespace smt {
void assert_body_axiom(body_expansion & e);
literal mk_literal(expr* e);
void disable_guard(expr* guard);
void disable_guard(expr* guard, expr_ref_vector const& guards);
unsigned get_depth(expr* e);
void set_depth(unsigned d, expr* e);
void set_depth_rec(unsigned d, expr* e);