@@ -105,7 +105,7 @@ namespace smt {
105
105
106
106
dyn_ack_manager::dyn_ack_manager (context & ctx, dyn_ack_params & p):
107
107
m_context (ctx),
108
- m_manager (ctx.get_manager()),
108
+ m (ctx.get_manager()),
109
109
m_params (p) {
110
110
}
111
111
@@ -115,12 +115,9 @@ namespace smt {
115
115
}
116
116
117
117
void dyn_ack_manager::reset_app_pairs () {
118
- svector<app_pair>::iterator it = m_app_pairs.begin ();
119
- svector<app_pair>::iterator end = m_app_pairs.end ();
120
- for (; it != end; ++it) {
121
- app_pair & p = *it;
122
- m_manager.dec_ref (p.first );
123
- m_manager.dec_ref (p.second );
118
+ for (app_pair& p : m_app_pairs) {
119
+ m.dec_ref (p.first );
120
+ m.dec_ref (p.second );
124
121
}
125
122
m_app_pairs.reset ();
126
123
}
@@ -144,22 +141,24 @@ namespace smt {
144
141
SASSERT (n1->get_decl () == n2->get_decl ());
145
142
SASSERT (n1->get_num_args () == n2->get_num_args ());
146
143
SASSERT (n1 != n2);
147
- if (m_manager .is_eq (n1))
144
+ if (m .is_eq (n1)) {
148
145
return ;
146
+ }
149
147
if (n1->get_id () > n2->get_id ())
150
148
std::swap (n1,n2);
151
149
app_pair p (n1, n2);
152
- if (m_instantiated.contains (p))
150
+ if (m_instantiated.contains (p)) {
153
151
return ;
152
+ }
154
153
unsigned num_occs = 0 ;
155
154
if (m_app_pair2num_occs.find (n1, n2, num_occs)) {
156
- TRACE (" dyn_ack" , tout << " used_cg_eh:\n " << mk_pp (n1, m_manager ) << " \n " << mk_pp (n2, m_manager ) << " \n num_occs: " << num_occs << " \n " ;);
155
+ TRACE (" dyn_ack" , tout << " used_cg_eh:\n " << mk_pp (n1, m ) << " \n " << mk_pp (n2, m ) << " \n num_occs: " << num_occs << " \n " ;);
157
156
num_occs++;
158
157
}
159
158
else {
160
159
num_occs = 1 ;
161
- m_manager .inc_ref (n1);
162
- m_manager .inc_ref (n2);
160
+ m .inc_ref (n1);
161
+ m .inc_ref (n2);
163
162
m_app_pairs.push_back (p);
164
163
}
165
164
SASSERT (num_occs > 0 );
@@ -169,34 +168,35 @@ namespace smt {
169
168
SASSERT (m_app_pair2num_occs.find (n1, n2, num_occs2) && num_occs == num_occs2);
170
169
#endif
171
170
if (num_occs == m_params.m_dack_threshold ) {
172
- TRACE (" dyn_ack" , tout << " found candidate:\n " << mk_pp (n1, m_manager ) << " \n " << mk_pp (n2, m_manager ) << " \n num_occs: " << num_occs << " \n " ;);
171
+ TRACE (" dyn_ack" , tout << " found candidate:\n " << mk_pp (n1, m ) << " \n " << mk_pp (n2, m ) << " \n num_occs: " << num_occs << " \n " ;);
173
172
m_to_instantiate.push_back (p);
174
173
}
175
174
}
176
175
177
176
void dyn_ack_manager::eq_eh (app * n1, app * n2, app* r) {
178
- if (n1 == n2 || r == n1 || r == n2 || m_manager .is_bool (n1)) {
177
+ if (n1 == n2 || r == n1 || r == n2 || m .is_bool (n1)) {
179
178
return ;
180
179
}
181
180
if (n1->get_id () > n2->get_id ())
182
181
std::swap (n1,n2);
183
182
TRACE (" dyn_ack" ,
184
- tout << mk_pp (n1, m_manager ) << " = " << mk_pp (n2, m_manager )
185
- << " = " << mk_pp (r, m_manager ) << " \n " ;);
183
+ tout << mk_pp (n1, m ) << " = " << mk_pp (n2, m )
184
+ << " = " << mk_pp (r, m ) << " \n " ;);
186
185
app_triple tr (n1, n2, r);
187
- if (m_triple.m_instantiated .contains (tr))
186
+ if (m_triple.m_instantiated .contains (tr)) {
188
187
return ;
188
+ }
189
189
unsigned num_occs = 0 ;
190
190
if (m_triple.m_app2num_occs .find (n1, n2, r, num_occs)) {
191
- TRACE (" dyn_ack" , tout << mk_pp (n1, m_manager ) << " \n " << mk_pp (n2, m_manager )
192
- << mk_pp (r, m_manager ) << " \n " << " \n num_occs: " << num_occs << " \n " ;);
191
+ TRACE (" dyn_ack" , tout << mk_pp (n1, m ) << " \n " << mk_pp (n2, m )
192
+ << mk_pp (r, m ) << " \n " << " \n num_occs: " << num_occs << " \n " ;);
193
193
num_occs++;
194
194
}
195
195
else {
196
196
num_occs = 1 ;
197
- m_manager .inc_ref (n1);
198
- m_manager .inc_ref (n2);
199
- m_manager .inc_ref (r);
197
+ m .inc_ref (n1);
198
+ m .inc_ref (n2);
199
+ m .inc_ref (r);
200
200
m_triple.m_apps .push_back (tr);
201
201
}
202
202
SASSERT (num_occs > 0 );
@@ -206,8 +206,8 @@ namespace smt {
206
206
SASSERT (m_triple.m_app2num_occs .find (n1, n2, r, num_occs2) && num_occs == num_occs2);
207
207
#endif
208
208
if (num_occs == m_params.m_dack_threshold ) {
209
- TRACE (" dyn_ack" , tout << " found candidate:\n " << mk_pp (n1, m_manager ) << " \n " << mk_pp (n2, m_manager )
210
- << " \n " << mk_pp (r, m_manager )
209
+ TRACE (" dyn_ack" , tout << " found candidate:\n " << mk_pp (n1, m ) << " \n " << mk_pp (n2, m )
210
+ << " \n " << mk_pp (r, m )
211
211
<< " \n num_occs: " << num_occs << " \n " ;);
212
212
m_triple.m_to_instantiate .push_back (tr);
213
213
}
@@ -245,9 +245,9 @@ namespace smt {
245
245
for (; it != end; ++it) {
246
246
app_pair & p = *it;
247
247
if (m_instantiated.contains (p)) {
248
- TRACE (" dyn_ack" , tout << " 1) erasing:\n " << mk_pp (p.first , m_manager ) << " \n " << mk_pp (p.second , m_manager ) << " \n " ;);
249
- m_manager .dec_ref (p.first );
250
- m_manager .dec_ref (p.second );
248
+ TRACE (" dyn_ack" , tout << " 1) erasing:\n " << mk_pp (p.first , m ) << " \n " << mk_pp (p.second , m ) << " \n " ;);
249
+ m .dec_ref (p.first );
250
+ m .dec_ref (p.second );
251
251
SASSERT (!m_app_pair2num_occs.contains (p.first , p.second ));
252
252
continue ;
253
253
}
@@ -261,10 +261,10 @@ namespace smt {
261
261
num_occs = static_cast <unsigned >(num_occs * m_params.m_dack_gc_inv_decay );
262
262
if (num_occs <= 1 ) {
263
263
num_deleted++;
264
- TRACE (" dyn_ack" , tout << " 2) erasing:\n " << mk_pp (p.first , m_manager ) << " \n " << mk_pp (p.second , m_manager ) << " \n " ;);
264
+ TRACE (" dyn_ack" , tout << " 2) erasing:\n " << mk_pp (p.first , m ) << " \n " << mk_pp (p.second , m ) << " \n " ;);
265
265
m_app_pair2num_occs.erase (p.first , p.second );
266
- m_manager .dec_ref (p.first );
267
- m_manager .dec_ref (p.second );
266
+ m .dec_ref (p.first );
267
+ m .dec_ref (p.second );
268
268
continue ;
269
269
}
270
270
*it2 = p;
@@ -283,20 +283,19 @@ namespace smt {
283
283
}
284
284
285
285
class dyn_ack_clause_del_eh : public clause_del_eh {
286
- dyn_ack_manager & m_manager ;
286
+ dyn_ack_manager & m ;
287
287
public:
288
288
dyn_ack_clause_del_eh (dyn_ack_manager & m):
289
- m_manager (m) {
289
+ m (m) {
290
290
}
291
291
~dyn_ack_clause_del_eh () override {}
292
- void operator ()(ast_manager & m , clause * cls) override {
293
- m_manager .del_clause_eh (cls);
292
+ void operator ()(ast_manager & _m , clause * cls) override {
293
+ m .del_clause_eh (cls);
294
294
dealloc (this );
295
295
}
296
296
};
297
297
298
298
void dyn_ack_manager::del_clause_eh (clause * cls) {
299
- TRACE (" dyn_ack" , tout << " del_clause_eh: " ; m_context.display_clause (tout, cls); tout << " \n " ;);
300
299
m_context.m_stats .m_num_del_dyn_ack ++;
301
300
302
301
app_pair p ((app*)nullptr ,(app*)nullptr );
@@ -342,7 +341,7 @@ namespace smt {
342
341
app * eq = m_context.mk_eq_atom (n1, n2);
343
342
m_context.internalize (eq, true );
344
343
literal l = m_context.get_literal (eq);
345
- TRACE (" dyn_ack" , tout << " eq:\n " << mk_pp (eq, m_manager ) << " \n literal: " ;
344
+ TRACE (" dyn_ack" , tout << " eq:\n " << mk_pp (eq, m ) << " \n literal: " ;
346
345
m_context.display_literal (tout, l); tout << " \n " ;);
347
346
return l;
348
347
}
@@ -354,7 +353,7 @@ namespace smt {
354
353
SASSERT (n1 != n2);
355
354
m_context.m_stats .m_num_dyn_ack ++;
356
355
TRACE (" dyn_ack_inst" , tout << " dyn_ack: " << n1->get_id () << " " << n2->get_id () << " \n " ;);
357
- TRACE (" dyn_ack" , tout << " expanding Ackermann's rule for:\n " << mk_pp (n1, m_manager ) << " \n " << mk_pp (n2, m_manager ) << " \n " ;);
356
+ TRACE (" dyn_ack" , tout << " expanding Ackermann's rule for:\n " << mk_pp (n1, m ) << " \n " << mk_pp (n2, m ) << " \n " ;);
358
357
unsigned num_args = n1->get_num_args ();
359
358
literal_buffer lits;
360
359
for (unsigned i = 0 ; i < num_args; i++) {
@@ -372,7 +371,7 @@ namespace smt {
372
371
clause_del_eh * del_eh = alloc (dyn_ack_clause_del_eh, *this );
373
372
374
373
justification * js = nullptr ;
375
- if (m_manager .proofs_enabled ())
374
+ if (m .proofs_enabled ())
376
375
js = alloc (dyn_ack_justification, n1, n2);
377
376
clause * cls = m_context.mk_clause (lits.size (), lits.c_ptr (), js, CLS_TH_LEMMA, del_eh);
378
377
if (!cls) {
@@ -392,13 +391,10 @@ namespace smt {
392
391
}
393
392
394
393
void dyn_ack_manager::reset_app_triples () {
395
- svector<app_triple>::iterator it = m_triple.m_apps .begin ();
396
- svector<app_triple>::iterator end = m_triple.m_apps .end ();
397
- for (; it != end; ++it) {
398
- app_triple & p = *it;
399
- m_manager.dec_ref (p.first );
400
- m_manager.dec_ref (p.second );
401
- m_manager.dec_ref (p.third );
394
+ for (app_triple& p : m_triple.m_apps ) {
395
+ m.dec_ref (p.first );
396
+ m.dec_ref (p.second );
397
+ m.dec_ref (p.third );
402
398
}
403
399
m_triple.m_apps .reset ();
404
400
}
@@ -408,9 +404,9 @@ namespace smt {
408
404
SASSERT (n1 != n2 && n1 != r && n2 != r);
409
405
m_context.m_stats .m_num_dyn_ack ++;
410
406
TRACE (" dyn_ack_inst" , tout << " dyn_ack: " << n1->get_id () << " " << n2->get_id () << " " << r->get_id () << " \n " ;);
411
- TRACE (" dyn_ack" , tout << " expanding Ackermann's rule for:\n " << mk_pp (n1, m_manager ) << " \n "
412
- << mk_pp (n2, m_manager ) << " \n "
413
- << mk_pp (r, m_manager ) << " \n " ;
407
+ TRACE (" dyn_ack" , tout << " expanding Ackermann's rule for:\n " << mk_pp (n1, m ) << " \n "
408
+ << mk_pp (n2, m ) << " \n "
409
+ << mk_pp (r, m ) << " \n " ;
414
410
);
415
411
app_triple tr (n1, n2, r);
416
412
SASSERT (m_triple.m_app2num_occs .contains (n1, n2, r));
@@ -424,7 +420,7 @@ namespace smt {
424
420
clause_del_eh * del_eh = alloc (dyn_ack_clause_del_eh, *this );
425
421
426
422
justification * js = nullptr ;
427
- if (m_manager .proofs_enabled ())
423
+ if (m .proofs_enabled ())
428
424
js = alloc (dyn_ack_justification, n1, n2);
429
425
clause * cls = m_context.mk_clause (lits.size (), lits.c_ptr (), js, CLS_TH_LEMMA, del_eh);
430
426
if (!cls) {
@@ -467,10 +463,10 @@ namespace smt {
467
463
for (; it != end; ++it) {
468
464
app_triple & p = *it;
469
465
if (m_triple.m_instantiated .contains (p)) {
470
- TRACE (" dyn_ack" , tout << " 1) erasing:\n " << mk_pp (p.first , m_manager ) << " \n " << mk_pp (p.second , m_manager ) << " \n " ;);
471
- m_manager .dec_ref (p.first );
472
- m_manager .dec_ref (p.second );
473
- m_manager .dec_ref (p.third );
466
+ TRACE (" dyn_ack" , tout << " 1) erasing:\n " << mk_pp (p.first , m ) << " \n " << mk_pp (p.second , m ) << " \n " ;);
467
+ m .dec_ref (p.first );
468
+ m .dec_ref (p.second );
469
+ m .dec_ref (p.third );
474
470
SASSERT (!m_triple.m_app2num_occs .contains (p.first , p.second , p.third ));
475
471
continue ;
476
472
}
@@ -484,11 +480,11 @@ namespace smt {
484
480
num_occs = static_cast <unsigned >(num_occs * m_params.m_dack_gc_inv_decay );
485
481
if (num_occs <= 1 ) {
486
482
num_deleted++;
487
- TRACE (" dyn_ack" , tout << " 2) erasing:\n " << mk_pp (p.first , m_manager ) << " \n " << mk_pp (p.second , m_manager ) << " \n " ;);
483
+ TRACE (" dyn_ack" , tout << " 2) erasing:\n " << mk_pp (p.first , m ) << " \n " << mk_pp (p.second , m ) << " \n " ;);
488
484
m_triple.m_app2num_occs .erase (p.first , p.second , p.third );
489
- m_manager .dec_ref (p.first );
490
- m_manager .dec_ref (p.second );
491
- m_manager .dec_ref (p.third );
485
+ m .dec_ref (p.first );
486
+ m .dec_ref (p.second );
487
+ m .dec_ref (p.third );
492
488
continue ;
493
489
}
494
490
*it2 = p;
@@ -509,10 +505,8 @@ namespace smt {
509
505
510
506
#ifdef Z3DEBUG
511
507
bool dyn_ack_manager::check_invariant () const {
512
- clause2app_pair::iterator it = m_clause2app_pair.begin ();
513
- clause2app_pair::iterator end = m_clause2app_pair.end ();
514
- for (; it != end; ++it) {
515
- app_pair const & p = it->get_value ();
508
+ for (auto const & kv : m_clause2app_pair) {
509
+ app_pair const & p = kv.get_value ();
516
510
SASSERT (m_instantiated.contains (p));
517
511
SASSERT (!m_app_pair2num_occs.contains (p.first , p.second ));
518
512
}
0 commit comments