mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
This commit is contained in:
parent
cabd5b10fa
commit
18d1b368d1
|
@ -818,9 +818,13 @@ namespace euf {
|
||||||
args.push_back(old_expr2new_enode[n1->get_arg(j)->get_expr_id()]);
|
args.push_back(old_expr2new_enode[n1->get_arg(j)->get_expr_id()]);
|
||||||
expr* e2 = tr(e1);
|
expr* e2 = tr(e1);
|
||||||
enode* n2 = mk(e2, n1->generation(), args.size(), args.data());
|
enode* n2 = mk(e2, n1->generation(), args.size(), args.data());
|
||||||
|
|
||||||
old_expr2new_enode.setx(e1->get_id(), n2, nullptr);
|
old_expr2new_enode.setx(e1->get_id(), n2, nullptr);
|
||||||
n2->set_value(n2->value());
|
n2->set_value(n1->value());
|
||||||
n2->m_bool_var = n1->m_bool_var;
|
n2->m_bool_var = n1->m_bool_var;
|
||||||
|
n2->m_commutative = n1->m_commutative;
|
||||||
|
n2->m_merge_enabled = n1->m_merge_enabled;
|
||||||
|
n2->m_is_equality = n1->m_is_equality;
|
||||||
}
|
}
|
||||||
for (unsigned i = 0; i < src.m_nodes.size(); ++i) {
|
for (unsigned i = 0; i < src.m_nodes.size(); ++i) {
|
||||||
enode* n1 = src.m_nodes[i];
|
enode* n1 = src.m_nodes[i];
|
||||||
|
|
|
@ -55,17 +55,17 @@ namespace euf {
|
||||||
unsigned m_table_id = UINT_MAX;
|
unsigned m_table_id = UINT_MAX;
|
||||||
unsigned m_generation = 0; // Tracks how many quantifier instantiation rounds were needed to generate this enode.
|
unsigned m_generation = 0; // Tracks how many quantifier instantiation rounds were needed to generate this enode.
|
||||||
enode_vector m_parents;
|
enode_vector m_parents;
|
||||||
enode* m_next = nullptr;
|
enode* m_next = nullptr;
|
||||||
enode* m_root = nullptr;
|
enode* m_root = nullptr;
|
||||||
enode* m_target = nullptr;
|
enode* m_target = nullptr;
|
||||||
enode* m_cg = nullptr;
|
enode* m_cg = nullptr;
|
||||||
th_var_list m_th_vars;
|
th_var_list m_th_vars;
|
||||||
justification m_justification;
|
justification m_justification;
|
||||||
unsigned m_num_args = 0;
|
unsigned m_num_args = 0;
|
||||||
signed char m_lbl_hash = -1; // It is different from -1, if enode is used in a pattern
|
signed char m_lbl_hash = -1; // It is different from -1, if enode is used in a pattern
|
||||||
approx_set m_lbls;
|
approx_set m_lbls;
|
||||||
approx_set m_plbls;
|
approx_set m_plbls;
|
||||||
enode* m_args[0];
|
enode* m_args[0];
|
||||||
|
|
||||||
friend class enode_args;
|
friend class enode_args;
|
||||||
friend class enode_parents;
|
friend class enode_parents;
|
||||||
|
|
|
@ -316,6 +316,7 @@ namespace euf {
|
||||||
}
|
}
|
||||||
if (n->is_equality()) {
|
if (n->is_equality()) {
|
||||||
SASSERT(!m.is_iff(e));
|
SASSERT(!m.is_iff(e));
|
||||||
|
SASSERT(m.is_eq(e));
|
||||||
if (sign)
|
if (sign)
|
||||||
m_egraph.new_diseq(n);
|
m_egraph.new_diseq(n);
|
||||||
else
|
else
|
||||||
|
@ -867,9 +868,9 @@ namespace euf {
|
||||||
for (euf::enode* n : r->m_egraph.nodes()) {
|
for (euf::enode* n : r->m_egraph.nodes()) {
|
||||||
auto b = n->bool_var();
|
auto b = n->bool_var();
|
||||||
if (b != sat::null_bool_var) {
|
if (b != sat::null_bool_var) {
|
||||||
m_bool_var2expr.setx(b, n->get_expr(), nullptr);
|
r->m_bool_var2expr.setx(b, n->get_expr(), nullptr);
|
||||||
SASSERT(r->m.is_bool(n->get_sort()));
|
SASSERT(r->m.is_bool(n->get_sort()));
|
||||||
IF_VERBOSE(11, verbose_stream() << "set bool_var " << r->bpp(n) << "\n");
|
IF_VERBOSE(11, verbose_stream() << "set bool_var " << b << " " << r->bpp(n) << " " << mk_bounded_pp(n->get_expr(), m) << "\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto* s_orig : m_id2solver) {
|
for (auto* s_orig : m_id2solver) {
|
||||||
|
|
Loading…
Reference in a new issue