Skip to content

Commit b170f10

Browse files
reorder template definition
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
1 parent 6dec943 commit b170f10

File tree

2 files changed

+36
-30
lines changed

2 files changed

+36
-30
lines changed

src/qe/qe_mbp.cpp

+35-29
Original file line numberDiff line numberDiff line change
@@ -45,35 +45,35 @@ using namespace qe;
4545
namespace {
4646
// rewrite select(store(a, i, k), j) into k if m \models i = j and select(a, j) if m \models i != j
4747
struct rd_over_wr_rewriter : public default_rewriter_cfg {
48-
ast_manager &m;
49-
array_util m_arr;
50-
model_evaluator m_eval;
51-
expr_ref_vector m_sc;
52-
53-
rd_over_wr_rewriter(ast_manager& man, model& mdl): m(man), m_arr(m), m_eval(mdl), m_sc(m) {
54-
m_eval.set_model_completion(false);
55-
}
56-
57-
br_status reduce_app(func_decl *f, unsigned num, expr *const *args,
58-
expr_ref &result, proof_ref &result_pr) {
59-
if (m_arr.is_select(f) && m_arr.is_store(args[0])) {
60-
expr_ref ind1(m), ind2(m);
61-
ind1 = m_eval(args[1]);
62-
ind2 = m_eval(to_app(args[0])->get_arg(1));
63-
if (ind1 == ind2) {
64-
result = to_app(args[0])->get_arg(2);
65-
m_sc.push_back(m.mk_eq(args[1], to_app(args[0])->get_arg(1)));
66-
return BR_DONE;
67-
}
68-
m_sc.push_back(m.mk_not(m.mk_eq(args[1], to_app(args[0])->get_arg(1))));
69-
expr_ref_vector new_args(m);
70-
new_args.push_back(to_app(args[0])->get_arg(0));
71-
new_args.push_back(args[1]);
72-
result = m_arr.mk_select(new_args);
73-
return BR_REWRITE1;
48+
ast_manager &m;
49+
array_util m_arr;
50+
model_evaluator m_eval;
51+
expr_ref_vector m_sc;
52+
53+
rd_over_wr_rewriter(ast_manager& man, model& mdl): m(man), m_arr(m), m_eval(mdl), m_sc(m) {
54+
m_eval.set_model_completion(false);
55+
}
56+
57+
br_status reduce_app(func_decl *f, unsigned num, expr *const *args,
58+
expr_ref &result, proof_ref &result_pr) {
59+
if (m_arr.is_select(f) && m_arr.is_store(args[0])) {
60+
expr_ref ind1(m), ind2(m);
61+
ind1 = m_eval(args[1]);
62+
ind2 = m_eval(to_app(args[0])->get_arg(1));
63+
if (ind1 == ind2) {
64+
result = to_app(args[0])->get_arg(2);
65+
m_sc.push_back(m.mk_eq(args[1], to_app(args[0])->get_arg(1)));
66+
return BR_DONE;
7467
}
75-
return BR_FAILED;
68+
m_sc.push_back(m.mk_not(m.mk_eq(args[1], to_app(args[0])->get_arg(1))));
69+
expr_ref_vector new_args(m);
70+
new_args.push_back(to_app(args[0])->get_arg(0));
71+
new_args.push_back(args[1]);
72+
result = m_arr.mk_select(new_args);
73+
return BR_REWRITE1;
7674
}
75+
return BR_FAILED;
76+
}
7777
};
7878
// rewrite all occurrences of (as const arr c) to (as const arr v) where v = m_eval(c)
7979
struct app_const_arr_rewriter : public default_rewriter_cfg {
@@ -123,6 +123,11 @@ namespace {
123123
}
124124
};
125125
}
126+
127+
template class rewriter_tpl<app_const_arr_rewriter>;
128+
template class rewriter_tpl<rd_over_wr_rewriter>;
129+
130+
126131
void rewrite_as_const_arr(expr* in, model& mdl, expr_ref& out) {
127132
app_const_arr_rewriter cfg(out.m(), mdl);
128133
rewriter_tpl<app_const_arr_rewriter> rw(out.m(), false, cfg);
@@ -675,6 +680,8 @@ class mbproj::impl {
675680
vars.reset();
676681
vars.append(other_vars);
677682
}
683+
684+
678685
};
679686

680687
mbproj::mbproj(ast_manager& m, params_ref const& p) {
@@ -715,5 +722,4 @@ opt::inf_eps mbproj::maximize(expr_ref_vector const& fmls, model& mdl, app* t, e
715722
scoped_no_proof _sp(fmls.get_manager());
716723
return m_impl->maximize(fmls, mdl, t, ge, gt);
717724
}
718-
template class rewriter_tpl<app_const_arr_rewriter>;
719-
template class rewriter_tpl<rd_over_wr_rewriter>;
725+

src/sat/smt/arith_axioms.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ namespace arith {
324324

325325

326326
void solver::mk_bv_axiom(app* n) {
327-
unsigned sz;
327+
unsigned sz = 0;
328328
expr* _x = nullptr, * _y = nullptr;
329329
VERIFY(a.is_band(n, sz, _x, _y) || a.is_shl(n, sz, _x, _y) || a.is_ashr(n, sz, _x, _y) || a.is_lshr(n, sz, _x, _y));
330330
rational N = rational::power_of_two(sz);

0 commit comments

Comments
 (0)