3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00

adding udoc_relation

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2014-09-16 13:22:04 -07:00
parent 887e6e5392
commit 1058de1aa7
9 changed files with 590 additions and 76 deletions

View file

@ -793,8 +793,10 @@ bool substitution_tree::visit(expr * e, st_visitor & st, node * r) {
}
else {
TRACE("st_bug", tout << "found match:\n"; m_subst->display(tout); tout << "m_subst: " << m_subst << "\n";);
if (!st(n->m_expr))
if (!st(n->m_expr)) {
clear_stack();
return false;
}
if (!backtrack())
break;
}
@ -806,12 +808,16 @@ bool substitution_tree::visit(expr * e, st_visitor & st, node * r) {
else if (!backtrack())
break;
}
clear_stack();
return true;
}
void substitution_tree::clear_stack() {
while (!m_bstack.empty()) {
m_subst->pop_scope();
m_bstack.pop_back();
}
m_subst->pop_scope();
return true;
}
template<substitution_tree::st_visit_mode Mode>

View file

@ -123,6 +123,8 @@ class substitution_tree {
template<st_visit_mode Mode>
void visit(expr * e, st_visitor & st, unsigned in_offset, unsigned st_offset, unsigned reg_offset);
void clear_stack();
public:
substitution_tree(ast_manager & m);
~substitution_tree();