3
0
Fork 0
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:
Nikolaj Bjorner 2021-09-06 19:14:03 +02:00
parent 3764eb1959
commit 72f6271d82
13 changed files with 70 additions and 38 deletions

View file

@ -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;