3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00

one more nightly

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-01-29 16:40:59 -08:00
parent ec1e3cc14a
commit 34c34b68ee
5 changed files with 14 additions and 8 deletions

View file

@ -229,6 +229,7 @@ namespace q {
m_mam->on_merge(root, other);
if (m_lazy_mam)
m_lazy_mam->on_merge(root, other);
m_mam->relevant_eh(other, false);
}
// watch only nodes introduced in bindings or ground arguments of functions

View file

@ -3102,10 +3102,10 @@ namespace q {
void add_candidate(code_tree * t, enode * app) {
if (t != nullptr) {
TRACE("mam_candidate", tout << "adding candidate:\n" << mk_ll_pp(app->get_expr(), m););
if (!t->has_candidates()) {
if (m_to_match.empty())
ctx.push(reset_to_match(*this));
}
m_to_match.push_back(t);
if (!t->has_candidates())
m_to_match.push_back(t);
t->add_candidate(app);
}
}
@ -3783,6 +3783,7 @@ namespace q {
void propagate() override {
TRACE("trigger_bug", tout << "match\n"; display(tout););
for (code_tree* t : m_to_match) {
std::cout << t << "\n";
SASSERT(t->has_candidates());
m_interpreter.execute(t);
t->reset_candidates();
@ -3824,8 +3825,9 @@ namespace q {
}
// This method is invoked when n becomes relevant.
// If lazy == true, then n is not added to the list of candidate enodes for matching. That is, the method just updates the lbls.
void relevant_eh(enode * n, bool lazy) {
// If lazy == true, then n is not added to the list of
// candidate enodes for matching. That is, the method just updates the lbls.
void relevant_eh(enode * n, bool lazy) override {
TRACE("trigger_bug", tout << "relevant_eh:\n" << mk_ismt2_pp(n->get_expr(), m) << "\n";
tout << "mam: " << this << "\n";);
TRACE("mam", tout << "relevant_eh: #" << n->get_expr_id() << "\n";);

View file

@ -49,6 +49,8 @@ namespace q {
virtual void add_pattern(quantifier * q, app * mp) = 0;
virtual void relevant_eh(enode * n, bool lazy) = 0;
virtual void propagate() = 0;
virtual bool can_propagate() const = 0;