mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
debugging #4169
This commit is contained in:
parent
68f1f1e62f
commit
9c52d4e615
|
@ -763,7 +763,6 @@ namespace smt {
|
||||||
// Common case: r2 and r1 have at most one theory var.
|
// Common case: r2 and r1 have at most one theory var.
|
||||||
theory_id t2 = r2->m_th_var_list.get_th_id();
|
theory_id t2 = r2->m_th_var_list.get_th_id();
|
||||||
theory_id t1 = r1->m_th_var_list.get_th_id();
|
theory_id t1 = r1->m_th_var_list.get_th_id();
|
||||||
// verbose_stream() << "[merge_theory_vars] t2: " << t2 << ", t1: " << t1 << "\n";
|
|
||||||
theory_var v2 = m_fparams.m_new_core2th_eq ? get_closest_var(n2, t2) : r2->m_th_var_list.get_th_var();
|
theory_var v2 = m_fparams.m_new_core2th_eq ? get_closest_var(n2, t2) : r2->m_th_var_list.get_th_var();
|
||||||
theory_var v1 = m_fparams.m_new_core2th_eq ? get_closest_var(n1, t1) : r1->m_th_var_list.get_th_var();
|
theory_var v1 = m_fparams.m_new_core2th_eq ? get_closest_var(n1, t1) : r1->m_th_var_list.get_th_var();
|
||||||
TRACE("merge_theory_vars",
|
TRACE("merge_theory_vars",
|
||||||
|
@ -1422,8 +1421,8 @@ namespace smt {
|
||||||
TRACE("push_new_th_diseqs", tout << m.get_family_name(th->get_id()) << " not using diseqs\n";);
|
TRACE("push_new_th_diseqs", tout << m.get_family_name(th->get_id()) << " not using diseqs\n";);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TRACE("push_new_th_diseqs", tout << "#" << r->get_owner_id() << " v" << v << "\n";);
|
|
||||||
theory_id th_id = th->get_id();
|
theory_id th_id = th->get_id();
|
||||||
|
TRACE("push_new_th_diseqs", tout << "#" << r->get_owner_id() << " " << mk_bounded_pp(r->get_owner(), m) << " v" << v << " th: " << th_id << "\n";);
|
||||||
for (enode * parent : r->get_parents()) {
|
for (enode * parent : r->get_parents()) {
|
||||||
CTRACE("parent_bug", parent == 0, tout << "#" << r->get_owner_id() << ", num_parents: " << r->get_num_parents() << "\n"; display(tout););
|
CTRACE("parent_bug", parent == 0, tout << "#" << r->get_owner_id() << ", num_parents: " << r->get_num_parents() << "\n"; display(tout););
|
||||||
if (parent->is_eq()) {
|
if (parent->is_eq()) {
|
||||||
|
@ -1601,6 +1600,11 @@ namespace smt {
|
||||||
if (inconsistent())
|
if (inconsistent())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
|
if (at_search_level() && induction::should_try(*this)) {
|
||||||
|
get_induction()();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -291,8 +291,6 @@ namespace smt {
|
||||||
if (eq.m_th_id == th_id) {
|
if (eq.m_th_id == th_id) {
|
||||||
enode * lhs_prime = th->get_enode(eq.m_lhs)->get_root();
|
enode * lhs_prime = th->get_enode(eq.m_lhs)->get_root();
|
||||||
enode * rhs_prime = th->get_enode(eq.m_rhs)->get_root();
|
enode * rhs_prime = th->get_enode(eq.m_rhs)->get_root();
|
||||||
TRACE("check_th_diseq_propagation",
|
|
||||||
tout << m.get_family_name(eq.m_th_id) << "\n";);
|
|
||||||
|
|
||||||
if ((lhs == lhs_prime && rhs == rhs_prime) ||
|
if ((lhs == lhs_prime && rhs == rhs_prime) ||
|
||||||
(rhs == lhs_prime && lhs == rhs_prime)) {
|
(rhs == lhs_prime && lhs == rhs_prime)) {
|
||||||
|
@ -302,15 +300,13 @@ namespace smt {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!found) {
|
CTRACE("check_th_diseq_propagation", !found,
|
||||||
// missed theory diseq propagation
|
tout
|
||||||
display(std::cout);
|
<< "checking theory: " << m.get_family_name(th_id) << "\n"
|
||||||
std::cout << "checking theory: " << m.get_family_name(th_id) << "\n";
|
<< "root: #" << n->get_root()->get_owner_id() << " node: #" << n->get_owner_id() << "\n"
|
||||||
std::cout << "root: #" << n->get_root()->get_owner_id() << " node: #" << n->get_owner_id() << "\n";
|
<< mk_pp(n->get_owner(), m) << "\n"
|
||||||
std::cout << mk_pp(n->get_owner(), m) << "\n";
|
<< "lhs: #" << lhs->get_owner_id() << ", rhs: #" << rhs->get_owner_id() << "\n"
|
||||||
std::cout << "lhs: #" << lhs->get_owner_id() << ", rhs: #" << rhs->get_owner_id() << "\n";
|
<< mk_bounded_pp(lhs->get_owner(), m) << " " << mk_bounded_pp(rhs->get_owner(), m) << "\n";);
|
||||||
std::cout << mk_bounded_pp(lhs->get_owner(), m) << " " << mk_bounded_pp(rhs->get_owner(), m) << "\n";
|
|
||||||
}
|
|
||||||
VERIFY(found);
|
VERIFY(found);
|
||||||
}
|
}
|
||||||
l = l->get_next();
|
l = l->get_next();
|
||||||
|
|
|
@ -312,12 +312,14 @@ namespace smt {
|
||||||
|
|
||||||
void theory_array::new_diseq_eh(theory_var v1, theory_var v2) {
|
void theory_array::new_diseq_eh(theory_var v1, theory_var v2) {
|
||||||
v1 = find(v1);
|
v1 = find(v1);
|
||||||
v2 = find(v2);
|
v2 = find(v2);
|
||||||
var_data * d1 = m_var_data[v1];
|
var_data * d1 = m_var_data[v1];
|
||||||
|
TRACE("ext", tout << "extensionality: " << d1->m_is_array << "\n"
|
||||||
|
<< mk_bounded_pp(get_enode(v1)->get_owner(), get_manager(), 5) << "\n"
|
||||||
|
<< mk_bounded_pp(get_enode(v2)->get_owner(), get_manager(), 5) << "\n";);
|
||||||
|
|
||||||
if (d1->m_is_array) {
|
if (d1->m_is_array) {
|
||||||
SASSERT(m_var_data[v2]->m_is_array);
|
SASSERT(m_var_data[v2]->m_is_array);
|
||||||
TRACE("ext", tout << "extensionality:\n" << mk_bounded_pp(get_enode(v1)->get_owner(), get_manager(), 5) << "\n" <<
|
|
||||||
mk_bounded_pp(get_enode(v2)->get_owner(), get_manager(), 5) << "\n";);
|
|
||||||
instantiate_extensionality(get_enode(v1), get_enode(v2));
|
instantiate_extensionality(get_enode(v1), get_enode(v2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue