@@ -41,13 +41,14 @@ void expr_abstractor::operator()(unsigned base, unsigned num_bound, expr* const*
41
41
42
42
while (!m_stack.empty ()) {
43
43
curr = m_stack.back ();
44
- if (m_map.contains (curr)) {
44
+ auto &val = m_map.insert_if_not_there (curr, nullptr );
45
+ if (val) {
45
46
m_stack.pop_back ();
46
47
continue ;
47
48
}
48
49
switch (curr->get_kind ()) {
49
50
case AST_VAR: {
50
- m_map. insert (curr, curr) ;
51
+ val = curr;
51
52
m_stack.pop_back ();
52
53
break ;
53
54
}
@@ -56,7 +57,7 @@ void expr_abstractor::operator()(unsigned base, unsigned num_bound, expr* const*
56
57
bool all_visited = true ;
57
58
bool changed = false ;
58
59
m_args.reset ();
59
- for (unsigned i = 0 ; i < a->get_num_args (); ++i) {
60
+ for (unsigned i = 0 , e = a->get_num_args (); i < e ; ++i) {
60
61
if (!m_map.find (a->get_arg (i), b)) {
61
62
m_stack.push_back (a->get_arg (i));
62
63
all_visited = false ;
@@ -73,7 +74,7 @@ void expr_abstractor::operator()(unsigned base, unsigned num_bound, expr* const*
73
74
} else {
74
75
b = curr;
75
76
}
76
- m_map. insert (curr, b) ;
77
+ val = b ;
77
78
m_stack.pop_back ();
78
79
}
79
80
break ;
@@ -84,14 +85,14 @@ void expr_abstractor::operator()(unsigned base, unsigned num_bound, expr* const*
84
85
expr_ref result1 (m);
85
86
unsigned new_base = base + q->get_num_decls ();
86
87
87
- for (unsigned i = 0 ; i < q->get_num_patterns (); ++i) {
88
+ for (unsigned i = 0 , e = q->get_num_patterns (); i < e ; ++i) {
88
89
result1 = expr_abstract (m, new_base, num_bound, bound, q->get_pattern (i));
89
90
patterns.push_back (result1.get ());
90
91
}
91
92
result1 = expr_abstract (m, new_base, num_bound, bound, q->get_expr ());
92
93
b = m.update_quantifier (q, patterns.size (), patterns.data (), result1.get ());
93
94
m_pinned.push_back (b);
94
- m_map. insert (curr, b) ;
95
+ val = b ;
95
96
m_stack.pop_back ();
96
97
break ;
97
98
}
@@ -115,7 +116,7 @@ void expr_abstract(ast_manager& m, unsigned base, unsigned num_bound, expr* cons
115
116
tout << result << " \n " ;);
116
117
}
117
118
118
- expr_ref mk_quantifier (quantifier_kind k, ast_manager& m, unsigned num_bound, app* const * bound, expr* n) {
119
+ static expr_ref mk_quantifier (quantifier_kind k, ast_manager& m, unsigned num_bound, app* const * bound, expr* n) {
119
120
expr_ref result (m);
120
121
expr_abstract (m, 0 , num_bound, (expr* const *)bound, n, result);
121
122
if (num_bound > 0 ) {
0 commit comments