Skip to content

Commit a635049

Browse files
fill in ad-hoc interpretation for division by 0. #2561
Signed-off-by: Nikolaj Bjorner <[email protected]>
1 parent 8a568d4 commit a635049

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/model/model_evaluator.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
5151
fpa_rewriter m_f_rw;
5252
seq_rewriter m_seq_rw;
5353
array_util m_ar;
54+
arith_util m_au;
5455
unsigned long long m_max_memory;
5556
unsigned m_max_steps;
5657
bool m_model_completion;
@@ -75,6 +76,7 @@ struct evaluator_cfg : public default_rewriter_cfg {
7576
m_f_rw(m),
7677
m_seq_rw(m),
7778
m_ar(m),
79+
m_au(m),
7880
m_pinned(m) {
7981
bool flat = true;
8082
m_b_rw.set_flat(flat);
@@ -331,6 +333,16 @@ struct evaluator_cfg : public default_rewriter_cfg {
331333
return BR_REWRITE_FULL;
332334
}
333335

336+
rational r;
337+
if (is_decl_of(f, m_au.get_family_id(), OP_DIV) && m_au.is_numeral(args[1], r) && r.is_zero()) {
338+
result = m_au.mk_real(0);
339+
return BR_DONE;
340+
}
341+
if (is_decl_of(f, m_au.get_family_id(), OP_IDIV) && m_au.is_numeral(args[1], r) && r.is_zero()) {
342+
result = m_au.mk_int(0);
343+
return BR_DONE;
344+
}
345+
334346
return BR_FAILED;
335347
}
336348

0 commit comments

Comments
 (0)