mirror of
https://github.com/Z3Prover/z3
synced 2025-07-31 08:23:17 +00:00
fixing 2267
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
16af728fbe
commit
28ce701e17
15 changed files with 174 additions and 48 deletions
|
@ -401,15 +401,25 @@ expr_ref model::cleanup_expr(top_sort& ts, expr* e, unsigned current_partition)
|
|||
continue;
|
||||
}
|
||||
fi = nullptr;
|
||||
new_t = nullptr;
|
||||
sort_ref_vector domain(m);
|
||||
if (autil.is_as_array(a)) {
|
||||
func_decl* f = autil.get_as_array_func_decl(a);
|
||||
// only expand auxiliary definitions that occur once.
|
||||
if (can_inline_def(ts, f)) {
|
||||
fi = get_func_interp(f);
|
||||
for (sort* s : *f) {
|
||||
domain.push_back(s);
|
||||
}
|
||||
new_t = fi->get_array_interp(domain);
|
||||
TRACE("model", tout << new_t << "\n";);
|
||||
}
|
||||
}
|
||||
|
||||
if (fi && fi->get_interp()) {
|
||||
|
||||
if (new_t) {
|
||||
// noop
|
||||
}
|
||||
else if (fi && fi->get_interp()) {
|
||||
f = autil.get_as_array_func_decl(a);
|
||||
expr_ref_vector sargs(m);
|
||||
sort_ref_vector vars(m);
|
||||
|
@ -484,6 +494,10 @@ void model::set_solver(expr_solver* s) {
|
|||
m_mev.set_solver(s);
|
||||
}
|
||||
|
||||
bool model::has_solver() {
|
||||
return m_mev.has_solver();
|
||||
}
|
||||
|
||||
expr_ref_vector model::operator()(expr_ref_vector const& ts) {
|
||||
expr_ref_vector rs(m);
|
||||
for (expr* t : ts) rs.push_back((*this)(t));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue