mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
bugs in: - rewriting of 0-ary expressions was incomplete - sharing annotations when a node has two theories attached it is shared - sharing of const of an array Remove unreadable part of pretty printer for lp solver.
This commit is contained in:
parent
3764eb1959
commit
72f6271d82
13 changed files with 70 additions and 38 deletions
|
@ -18,6 +18,7 @@ Revision History:
|
|||
--*/
|
||||
#include "ast/ast_pp.h"
|
||||
#include "ast/ast_util.h"
|
||||
#include "ast/for_each_expr.h"
|
||||
#include "ast/recfun_decl_plugin.h"
|
||||
#include "ast/rewriter/rewriter_types.h"
|
||||
#include "ast/rewriter/bool_rewriter.h"
|
||||
|
@ -278,6 +279,9 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
}
|
||||
expr_ref tmp(m);
|
||||
func_interp* fi = m_model.get_func_interp(g);
|
||||
if (fi && !fi->get_else()) {
|
||||
fi->set_else(m_model.get_some_value(g->get_range()));
|
||||
}
|
||||
if (fi && (tmp = fi->get_array_interp(g))) {
|
||||
model_evaluator ev(m_model, m_params);
|
||||
ev.set_model_completion(false);
|
||||
|
@ -287,6 +291,10 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
TRACE("model_evaluator", tout << mk_pp(g, m) << " " << result << "\n";);
|
||||
return true;
|
||||
}
|
||||
|
||||
TRACE("model_evaluator",
|
||||
tout << "could not get array interpretation " << mk_pp(g, m) << " " << fi << "\n";
|
||||
tout << m_model << "\n";);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -403,8 +411,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
}
|
||||
|
||||
br_status mk_array_eq(expr* a, expr* b, expr_ref& result) {
|
||||
TRACE("model_evaluator", tout << "mk_array_eq " << m_array_equalities << " "
|
||||
<< mk_pp(a, m) << " " << mk_pp(b, m) << "\n";);
|
||||
|
||||
if (a == b) {
|
||||
result = m.mk_true();
|
||||
return BR_DONE;
|
||||
|
@ -412,6 +419,8 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
|||
if (!m_array_equalities) {
|
||||
return m_ar_rw.mk_eq_core(a, b, result);
|
||||
}
|
||||
TRACE("model_evaluator", tout << "mk_array_eq " << m_array_equalities << " "
|
||||
<< mk_pp(a, m) << " " << mk_pp(b, m) << "\n";);
|
||||
|
||||
vector<expr_ref_vector> stores1, stores2;
|
||||
bool args_are_unique1, args_are_unique2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue