3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-06 09:34:08 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-09-07 18:22:16 +03:00
parent d44081db7d
commit 5ba4d8d0f1

View file

@ -590,6 +590,10 @@ namespace smtfd {
return mk_and(r);
}
void check_extensionality(expr* a, expr* b) {
// sort* s = m.get_sort(a);
}
public:
a_plugin(smtfd_abs& a, expr_ref_vector& lemmas, model* mdl):
@ -625,6 +629,30 @@ namespace smtfd {
unsigned max_rounds() override { return 2; }
void global_check(expr_ref_vector const& core) {
obj_map<sort, obj_map<expr, expr*>*> sort2val2array;
expr_ref_vector pinned(m);
for (expr* t : subterms(core)) {
if (m_autil.is_array(t)) {
sort* s = m.get_sort(t);
obj_map<expr, expr*>* v2a = nullptr;
if (!sort2val2array.find(s, v2a)) {
v2a = alloc(obj_map<expr, expr*>);
sort2val2array.insert(s, v2a);
}
expr* a = nullptr;
expr_ref v = eval_abs(t);
pinned.push_back(v);
if (v2a->find(v, a)) {
check_extensionality(a, t);
}
else {
v2a->insert(v, t);
}
}
}
}
};
struct stats {