@@ -19,6 +19,7 @@ Revision History:
19
19
--*/
20
20
21
21
#include " util/uint_set.h"
22
+ #include " util/scoped_ptr_vector.h"
22
23
#include " ast/expr2var.h"
23
24
#include " ast/ast_util.h"
24
25
#include " ast/rewriter/expr_safe_replace.h"
@@ -67,7 +68,7 @@ namespace qe {
67
68
bool m_valid_model;
68
69
vector<nlsat::var_vector> m_bound_rvars;
69
70
vector<svector<nlsat::bool_var> > m_bound_bvars;
70
- vector <nlsat::scoped_literal_vector> m_preds;
71
+ scoped_ptr_vector <nlsat::scoped_literal_vector> m_preds;
71
72
svector<max_level> m_rvar2level;
72
73
u_map<max_level> m_bvar2level;
73
74
expr2var m_a2b, m_t2x;
@@ -210,7 +211,7 @@ namespace qe {
210
211
211
212
void display_preds (std::ostream& out) {
212
213
for (unsigned i = 0 ; i < m_preds.size (); ++i) {
213
- m_solver.display (out << i << " : " , m_preds[i]. size (), m_preds[i]. c_ptr ());
214
+ m_solver.display (out << i << " : " , m_preds[i]-> size (), m_preds[i]-> c_ptr ());
214
215
out << " \n " ;
215
216
}
216
217
}
@@ -298,15 +299,15 @@ namespace qe {
298
299
return ;
299
300
}
300
301
if (lvl <= s.m_preds .size ()) {
301
- for (unsigned j = 0 ; j < s.m_preds [lvl - 1 ]. size (); ++j) {
302
- s.add_literal (s.m_cached_asms , s.m_preds [lvl - 1 ][j]);
302
+ for (unsigned j = 0 ; j < s.m_preds [lvl - 1 ]-> size (); ++j) {
303
+ s.add_literal (s.m_cached_asms , (* s.m_preds [lvl - 1 ]) [j]);
303
304
}
304
305
}
305
306
s.m_asms .append (s.m_cached_asms );
306
307
307
308
for (unsigned i = lvl + 1 ; i < s.m_preds .size (); i += 2 ) {
308
- for (unsigned j = 0 ; j < s.m_preds [i]. size (); ++j) {
309
- nlsat::literal l = s.m_preds [i][j];
309
+ for (unsigned j = 0 ; j < s.m_preds [i]-> size (); ++j) {
310
+ nlsat::literal l = (* s.m_preds [i]) [j];
310
311
max_level lv = s.m_bvar2level .find (l.var ());
311
312
bool use =
312
313
(lv.m_fa == i && (lv.m_ex == UINT_MAX || lv.m_ex < lvl)) ||
@@ -441,10 +442,10 @@ namespace qe {
441
442
void set_level (nlsat::bool_var v, max_level const & level) {
442
443
unsigned k = level.max ();
443
444
while (s.m_preds .size () <= k) {
444
- s.m_preds .push_back (nlsat::scoped_literal_vector ( s.m_solver ));
445
+ s.m_preds .push_back (alloc ( nlsat::scoped_literal_vector, s.m_solver ));
445
446
}
446
447
nlsat::literal l (v, false );
447
- s.m_preds [k]. push_back (l);
448
+ s.m_preds [k]-> push_back (l);
448
449
s.m_solver .inc_ref (v);
449
450
s.m_bvar2level .insert (v, level);
450
451
TRACE (" qe" , s.m_solver .display (tout, l); tout << " : " << level << " \n " ;);
0 commit comments