3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 19:35:50 +00:00
* remove level of indirection for context and ast_manager in smt_theory

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add request by #4252

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* move to def

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* int

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix #4251

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix #4255

* fix #4257

* add code to debug #4246

* restore new solver as default

* na

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix #4246

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-05-09 17:40:02 -07:00 committed by GitHub
parent becf423c77
commit fdc87f286f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 269 additions and 231 deletions

View file

@ -83,6 +83,18 @@ public:
sels.erase(s);
}
}
void prune_non_funs(fun2terms_map& f2t, ast_mark& non_funs) {
ptr_vector<func_decl> to_delete;
for (auto& kv : f2t) {
if (non_funs.is_marked(kv.m_key)) {
to_delete.push_back(kv.m_key);
dealloc(kv.m_value);
}
}
for (func_decl * f : to_delete)
f2t.erase(f);
}
inline bv_util& bvutil() { return m_bvutil; }

View file

@ -271,6 +271,7 @@ lbool lackr::lazy() {
bool lackr::collect_terms() {
ptr_vector<expr> stack = m_formulas;
expr_mark visited;
func_decl* f;
while (!stack.empty()) {
expr * curr = stack.back();
@ -291,6 +292,8 @@ bool lackr::collect_terms() {
m_ackr_helper.mark_non_select(a, m_non_select);
add_term(a);
}
if (m_autil.is_as_array(curr, f))
m_non_funs.mark(f, true);
break;
}
case AST_QUANTIFIER:
@ -302,6 +305,7 @@ bool lackr::collect_terms() {
}
m_ackr_helper.prune_non_select(m_sel2terms, m_non_select);
m_ackr_helper.prune_non_funs(m_fun2terms, m_non_funs);
return true;
}

View file

@ -94,6 +94,7 @@ class lackr {
model_ref m_model;
bool m_eager;
expr_mark m_non_select;
ast_mark m_non_funs;
lackr_stats& m_st;
bool m_is_init;