mirror of
https://github.com/Z3Prover/z3
synced 2025-06-18 11:58:31 +00:00
include rewriter for recursive functions in model-evaluator
fixes bug reported by Tahina and Nick, @tahina-pro
This commit is contained in:
parent
5ba06f4e28
commit
09f911d8a8
1 changed files with 5 additions and 0 deletions
|
@ -32,6 +32,7 @@ Revision History:
|
||||||
#include "ast/rewriter/th_rewriter.h"
|
#include "ast/rewriter/th_rewriter.h"
|
||||||
#include "ast/rewriter/rewriter_def.h"
|
#include "ast/rewriter/rewriter_def.h"
|
||||||
#include "ast/rewriter/var_subst.h"
|
#include "ast/rewriter/var_subst.h"
|
||||||
|
#include "ast/rewriter/recfun_rewriter.h"
|
||||||
#include "model/model_smt2_pp.h"
|
#include "model/model_smt2_pp.h"
|
||||||
#include "model/model.h"
|
#include "model/model.h"
|
||||||
#include "model/model_evaluator_params.hpp"
|
#include "model/model_evaluator_params.hpp"
|
||||||
|
@ -53,6 +54,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
||||||
pb_rewriter m_pb_rw;
|
pb_rewriter m_pb_rw;
|
||||||
fpa_rewriter m_f_rw;
|
fpa_rewriter m_f_rw;
|
||||||
seq_rewriter m_seq_rw;
|
seq_rewriter m_seq_rw;
|
||||||
|
recfun_rewriter m_rec_rw;
|
||||||
array_util m_ar;
|
array_util m_ar;
|
||||||
arith_util m_au;
|
arith_util m_au;
|
||||||
fpa_util m_fpau;
|
fpa_util m_fpau;
|
||||||
|
@ -80,6 +82,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
||||||
m_pb_rw(m),
|
m_pb_rw(m),
|
||||||
m_f_rw(m),
|
m_f_rw(m),
|
||||||
m_seq_rw(m),
|
m_seq_rw(m),
|
||||||
|
m_rec_rw(m),
|
||||||
m_ar(m),
|
m_ar(m),
|
||||||
m_au(m),
|
m_au(m),
|
||||||
m_fpau(m),
|
m_fpau(m),
|
||||||
|
@ -283,6 +286,8 @@ struct evaluator_cfg : public default_rewriter_cfg {
|
||||||
st = m_f_rw.mk_app_core(f, num, args, result);
|
st = m_f_rw.mk_app_core(f, num, args, result);
|
||||||
else if (fid == m_seq_rw.get_fid())
|
else if (fid == m_seq_rw.get_fid())
|
||||||
st = m_seq_rw.mk_app_core(f, num, args, result);
|
st = m_seq_rw.mk_app_core(f, num, args, result);
|
||||||
|
else if (fid == m_rec_rw.get_fid())
|
||||||
|
st = m_rec_rw.mk_app_core(f, num, args, result);
|
||||||
else if (fid == m.get_label_family_id() && num == 1) {
|
else if (fid == m.get_label_family_id() && num == 1) {
|
||||||
result = args[0];
|
result = args[0];
|
||||||
st = BR_DONE;
|
st = BR_DONE;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue