Skip to content

Commit d7e419b

Browse files
fixes and checks
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent ab0459e commit d7e419b

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/ast/sls/bv_sls.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ namespace bv {
171171
}
172172
else {
173173
m_eval.repair_up(e);
174+
SASSERT(eval_is_correct(e));
174175
for (auto p : m_terms.parents(e))
175176
m_repair_up.insert(p->get_id());
176177
}
@@ -191,8 +192,17 @@ namespace bv {
191192
model_ref mdl = alloc(model, m);
192193
auto& terms = m_eval.sort_assertions(m_terms.assertions());
193194
for (expr* e : terms) {
195+
if (!eval_is_correct(to_app(e))) {
196+
verbose_stream() << "missed evaluation #" << e->get_id() << " " << mk_bounded_pp(e, m) << "\n";
197+
if (bv.is_bv(e)) {
198+
auto const& v0 = m_eval.wval0(e);
199+
auto const& v1 = m_eval.wval1(to_app(e));
200+
verbose_stream() << v0 << "\n" << v1 << "\n";
201+
}
202+
}
194203
if (!is_uninterp_const(e))
195204
continue;
205+
196206
auto f = to_app(e)->get_decl();
197207
if (m.is_bool(e))
198208
mdl->register_decl(f, m.mk_bool_val(m_eval.bval0(e)));

src/ast/sls/bv_sls_eval.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -1020,7 +1020,7 @@ namespace bv {
10201020
unsigned parity_e = e.parity(e.bits);
10211021
unsigned parity_b = b.parity(b.bits);
10221022

1023-
#if 0
1023+
#if 1
10241024

10251025
auto& x = m_tmp;
10261026
auto& y = m_tmp2;
@@ -1521,9 +1521,9 @@ namespace bv {
15211521
}
15221522

15231523
bool sls_eval::try_repair_extract(bvval const& e, bvval& a, unsigned lo) {
1524-
for (unsigned i = 0; i < a.bw; ++i)
1525-
if (!a.get(a.fixed, i))
1526-
a.set(a.bits, i, e.get(e.bits, i + lo));
1524+
for (unsigned i = 0; i < e.bw; ++i)
1525+
if (!a.get(a.fixed, i + lo))
1526+
a.set(a.bits, i + lo, e.get(e.bits, i));
15271527
return true;
15281528
}
15291529

@@ -1553,6 +1553,6 @@ namespace bv {
15531553
if (m.is_bool(e))
15541554
set(e, bval1(to_app(e)));
15551555
else if (bv.is_bv(e))
1556-
wval0(e).try_set(wval1(to_app(e)));
1556+
wval0(e).set(wval1(to_app(e)));
15571557
}
15581558
}

0 commit comments

Comments
 (0)