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:
parent
19db0c5f2c
commit
5253f3a12b
|
@ -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();
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue