mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 11:55:51 +00:00
* fixing #4670 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * init Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * arrays Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ee00542e76
commit
cfa7c733db
48 changed files with 1591 additions and 359 deletions
|
@ -62,7 +62,7 @@ namespace bv {
|
|||
m_zero_one_bits.push_back(zero_one_bits());
|
||||
ctx.attach_th_var(n, this, r);
|
||||
|
||||
TRACE("bv", tout << "mk-var: " << r << " " << n->get_owner_id() << " " << mk_pp(n->get_owner(), m) << "\n";);
|
||||
TRACE("bv", tout << "mk-var: " << r << " " << n->get_expr_id() << " " << mk_pp(n->get_expr(), m) << "\n";);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -100,17 +100,9 @@ namespace bv {
|
|||
app* a = to_app(e);
|
||||
|
||||
SASSERT(!n || !n->is_attached_to(get_id()));
|
||||
if (!n) {
|
||||
m_args.reset();
|
||||
if (get_config().m_bv_reflect || m.is_considered_uninterpreted(a->get_decl())) {
|
||||
for (expr* arg : *a)
|
||||
m_args.push_back(expr2enode(arg));
|
||||
}
|
||||
DEBUG_CODE(for (auto* n : m_args) VERIFY(n););
|
||||
n = ctx.mk_enode(e, m_args.size(), m_args.c_ptr());
|
||||
SASSERT(!n->is_attached_to(get_id()));
|
||||
ctx.attach_node(n);
|
||||
}
|
||||
bool suppress_args = !get_config().m_bv_reflect && !m.is_considered_uninterpreted(a->get_decl());
|
||||
if (!n)
|
||||
n = mk_enode(e, suppress_args);
|
||||
|
||||
SASSERT(!n->is_attached_to(get_id()));
|
||||
theory_var v = mk_var(n);
|
||||
|
@ -196,14 +188,14 @@ namespace bv {
|
|||
theory_var v = n->get_th_var(get_id());
|
||||
if (v == euf::null_theory_var) {
|
||||
v = mk_var(n);
|
||||
if (bv.is_bv(n->get_owner()))
|
||||
if (bv.is_bv(n->get_expr()))
|
||||
mk_bits(v);
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
euf::enode* solver::get_arg(euf::enode* n, unsigned idx) {
|
||||
app* o = to_app(n->get_owner());
|
||||
app* o = to_app(n->get_expr());
|
||||
return ctx.get_enode(o->get_arg(idx));
|
||||
}
|
||||
|
||||
|
@ -280,7 +272,7 @@ namespace bv {
|
|||
}
|
||||
|
||||
unsigned solver::get_bv_size(euf::enode* n) {
|
||||
return bv.get_bv_size(n->get_owner());
|
||||
return bv.get_bv_size(n->get_expr());
|
||||
}
|
||||
|
||||
unsigned solver::get_bv_size(theory_var v) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue