mirror of
https://github.com/Z3Prover/z3
synced 2025-06-05 21:53:23 +00:00
ensure equalities between terms bound to quantified variables are always logged
This commit is contained in:
parent
1e4f524a22
commit
165b256d32
1 changed files with 11 additions and 2 deletions
|
@ -2376,6 +2376,13 @@ namespace smt {
|
||||||
SASSERT(m_n2 != 0);
|
SASSERT(m_n2 != 0);
|
||||||
if (m_n1->get_root() != m_n2->get_root())
|
if (m_n1->get_root() != m_n2->get_root())
|
||||||
goto backtrack;
|
goto backtrack;
|
||||||
|
|
||||||
|
// We will use the common root when instantiating the quantifier => log the necessary equalities
|
||||||
|
if (m_ast_manager.has_trace_stream()) {
|
||||||
|
m_used_enodes.push_back(std::make_tuple(m_n1, m_n1->get_root()));
|
||||||
|
m_used_enodes.push_back(std::make_tuple(m_n2, m_n2->get_root()));
|
||||||
|
}
|
||||||
|
|
||||||
m_pc = m_pc->m_next;
|
m_pc = m_pc->m_next;
|
||||||
goto main_loop;
|
goto main_loop;
|
||||||
|
|
||||||
|
@ -2572,8 +2579,10 @@ namespace smt {
|
||||||
if (m_n1 == 0 || !m_context.is_relevant(m_n1)) \
|
if (m_n1 == 0 || !m_context.is_relevant(m_n1)) \
|
||||||
goto backtrack; \
|
goto backtrack; \
|
||||||
update_max_generation(m_n1, nullptr); \
|
update_max_generation(m_n1, nullptr); \
|
||||||
|
if (m_ast_manager.has_trace_stream()) { \
|
||||||
for (unsigned i = 0; i < static_cast<const get_cgr *>(m_pc)->m_num_args; ++i) { \
|
for (unsigned i = 0; i < static_cast<const get_cgr *>(m_pc)->m_num_args; ++i) { \
|
||||||
m_used_enodes.push_back(std::make_tuple(m_n1->get_arg(i), m_args[i])); \
|
m_used_enodes.push_back(std::make_tuple(m_n1->get_arg(i), m_n1->get_arg(i)->get_root())); \
|
||||||
|
} \
|
||||||
} \
|
} \
|
||||||
m_registers[static_cast<const get_cgr *>(m_pc)->m_oreg] = m_n1; \
|
m_registers[static_cast<const get_cgr *>(m_pc)->m_oreg] = m_n1; \
|
||||||
m_pc = m_pc->m_next; \
|
m_pc = m_pc->m_next; \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue