mirror of
https://github.com/Z3Prover/z3
synced 2025-04-15 13:28:47 +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_subset_based_core(bool f) { m_subset_based_core = f; }
|
||||||
void set_consequences(expr_ref_vector* consequences) { m_consequences = consequences; }
|
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; }
|
bool assumes_level() const { return m_assumes_level; }
|
||||||
|
|
||||||
void add_level();
|
void add_level();
|
||||||
|
|
|
@ -747,17 +747,25 @@ namespace smt {
|
||||||
enode * e = mk_enode(n);
|
enode * e = mk_enode(n);
|
||||||
return mk_var(e);
|
return mk_var(e);
|
||||||
}
|
}
|
||||||
else {
|
if (m_util.get_family_id() == n->get_family_id()) {
|
||||||
TRACE("arith_internalize_detail", tout << "before:\n" << mk_pp(n, get_manager()) << "\n";);
|
found_unsupported_op(n);
|
||||||
if (!ctx.e_internalized(n))
|
if (ctx.e_internalized(n))
|
||||||
ctx.internalize(n, false);
|
return expr2var(n);
|
||||||
TRACE("arith_internalize_detail", tout << "after:\n" << mk_pp(n, get_manager()) << "\n";);
|
for (unsigned i = 0; i < n->get_num_args(); ++i) {
|
||||||
enode * e = ctx.get_enode(n);
|
ctx.internalize(n->get_arg(i), false);
|
||||||
if (!is_attached_to_var(e))
|
}
|
||||||
return mk_var(e);
|
return mk_var(mk_enode(n));
|
||||||
else
|
|
||||||
return e->get_th_var(get_id());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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