3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-13 12:28:44 +00:00

internalize unsupported operations

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2016-06-08 13:56:01 -07:00
parent 19db0c5f2c
commit 5253f3a12b
2 changed files with 18 additions and 13 deletions

View file

@ -87,9 +87,6 @@ namespace pdr {
void set_subset_based_core(bool f) { m_subset_based_core = f; }
void set_consequences(expr_ref_vector* consequences) { m_consequences = consequences; }
void set_background_assumptions(expr_ref_vector const& assumptions);
bool assumes_level() const { return m_assumes_level; }
void add_level();

View file

@ -747,17 +747,25 @@ namespace smt {
enode * e = mk_enode(n);
return mk_var(e);
}
else {
TRACE("arith_internalize_detail", tout << "before:\n" << mk_pp(n, get_manager()) << "\n";);
if (!ctx.e_internalized(n))
ctx.internalize(n, false);
TRACE("arith_internalize_detail", tout << "after:\n" << mk_pp(n, get_manager()) << "\n";);
enode * e = ctx.get_enode(n);
if (!is_attached_to_var(e))
return mk_var(e);
else
return e->get_th_var(get_id());
if (m_util.get_family_id() == n->get_family_id()) {
found_unsupported_op(n);
if (ctx.e_internalized(n))
return expr2var(n);
for (unsigned i = 0; i < n->get_num_args(); ++i) {
ctx.internalize(n->get_arg(i), false);
}
return mk_var(mk_enode(n));
}
TRACE("arith_internalize_detail", tout << "before:\n" << mk_pp(n, get_manager()) << "\n";);
if (!ctx.e_internalized(n))
ctx.internalize(n, false);
TRACE("arith_internalize_detail", tout << "after:\n" << mk_pp(n, get_manager()) << "\n";);
enode * e = ctx.get_enode(n);
if (!is_attached_to_var(e))
return mk_var(e);
else
return e->get_th_var(get_id());
}
/**