@@ -52,7 +52,7 @@ nlsat::interval_set_ref tst_interval(nlsat::interval_set_ref const & s1,
52
52
anum zero;
53
53
nlsat::interval_set_ref full (ism);
54
54
nlsat::literal dummy (131 , false );
55
- full = ism.mk (true , true , zero, true , true , zero, dummy);
55
+ full = ism.mk (true , true , zero, true , true , zero, dummy, nullptr );
56
56
ENSURE (ism.set_eq (r, full) == ism.is_full (r));
57
57
return r;
58
58
}
@@ -83,94 +83,94 @@ static void tst3() {
83
83
nlsat::interval_set_ref s1 (ism), s2 (ism), s3 (ism), s4 (ism);
84
84
s1 = ism.mk_empty ();
85
85
std::cout << " s1: " << s1 << " \n " ;
86
- s2 = ism.mk (true , true , zero, false , false , sqrt2, np2);
86
+ s2 = ism.mk (true , true , zero, false , false , sqrt2, np2, nullptr );
87
87
std::cout << " s2: " << s2 << " \n " ;
88
- s3 = ism.mk (false , false , zero, false , false , two, p1);
88
+ s3 = ism.mk (false , false , zero, false , false , two, p1, nullptr );
89
89
std::cout << " s3: " << s3 << " \n " ;
90
90
s4 = ism.mk_union (s2, s3);
91
91
std::cout << " s4: " << s4 << " \n " ;
92
92
93
93
// Case
94
94
// s1: [ ... ]
95
95
// s2: [ ... ]
96
- s1 = ism.mk (false , false , zero, false , false , two, p1);
97
- s2 = ism.mk (false , false , zero, false , false , two, p2);
96
+ s1 = ism.mk (false , false , zero, false , false , two, p1, nullptr );
97
+ s2 = ism.mk (false , false , zero, false , false , two, p2, nullptr );
98
98
tst_interval (s1, s2, 1 );
99
99
100
100
// Case
101
101
// s1: [ ... ]
102
102
// s2: [ ... ]
103
- s1 = ism.mk (false , false , zero, false , false , two, p1);
104
- s2 = ism.mk (false , false , m_sqrt2, false , false , one, p2);
103
+ s1 = ism.mk (false , false , zero, false , false , two, p1, nullptr );
104
+ s2 = ism.mk (false , false , m_sqrt2, false , false , one, p2, nullptr );
105
105
s3 = ism.mk_union (s1, s2);
106
106
tst_interval (s1, s2, 2 );
107
107
108
108
// Case
109
109
// s1: [ ... ]
110
110
// s2: [ ... ]
111
- s1 = ism.mk (false , false , m_sqrt2, false , false , one, p1);
112
- s2 = ism.mk (false , false , zero, false , false , two, p2);
111
+ s1 = ism.mk (false , false , m_sqrt2, false , false , one, p1, nullptr );
112
+ s2 = ism.mk (false , false , zero, false , false , two, p2, nullptr );
113
113
tst_interval (s1, s2, 2 );
114
114
115
115
// Case
116
116
// s1: [ ... ]
117
117
// s2: [ ... ]
118
- s1 = ism.mk (false , false , m_sqrt2, false , false , one, p1);
119
- s2 = ism.mk (false , false , two, false , false , three, p2);
118
+ s1 = ism.mk (false , false , m_sqrt2, false , false , one, p1, nullptr );
119
+ s2 = ism.mk (false , false , two, false , false , three, p2, nullptr );
120
120
tst_interval (s1, s2, 2 );
121
121
122
122
// Case
123
123
// s1: [ ... ]
124
124
// s2: [ ... ]
125
- s1 = ism.mk (false , false , m_sqrt2, false , false , three, p1);
126
- s2 = ism.mk (false , false , zero, false , false , two, p2);
125
+ s1 = ism.mk (false , false , m_sqrt2, false , false , three, p1, nullptr );
126
+ s2 = ism.mk (false , false , zero, false , false , two, p2, nullptr );
127
127
tst_interval (s1, s2, 1 );
128
128
129
129
// Case
130
130
// s1: [ ... ]
131
131
// s2: [ ... ] [ ... ]
132
- s1 = ism.mk (false , false , m_two, false , false , two, p1);
133
- s2 = ism.mk (false , false , m_sqrt2, false , false , zero, p2);
134
- s3 = ism.mk (false , false , one, false , false , three, p2);
132
+ s1 = ism.mk (false , false , m_two, false , false , two, p1, nullptr );
133
+ s2 = ism.mk (false , false , m_sqrt2, false , false , zero, p2, nullptr );
134
+ s3 = ism.mk (false , false , one, false , false , three, p2, nullptr );
135
135
s2 = ism.mk_union (s2, s3);
136
136
tst_interval (s1, s2, 2 );
137
137
138
138
// Case
139
139
// s1: [ ... ]
140
140
// s2: [ ... ]
141
- s1 = ism.mk (false , false , m_two, false , false , two, p1);
142
- s2 = ism.mk (false , false , two, false , false , three, p2);
141
+ s1 = ism.mk (false , false , m_two, false , false , two, p1, nullptr );
142
+ s2 = ism.mk (false , false , two, false , false , three, p2, nullptr );
143
143
tst_interval (s1, s2, 2 );
144
- s2 = ism.mk (true , false , two, false , false , three, p2);
144
+ s2 = ism.mk (true , false , two, false , false , three, p2, nullptr );
145
145
tst_interval (s1, s2, 2 );
146
- s2 = ism.mk (true , false , two, false , false , three, p1);
146
+ s2 = ism.mk (true , false , two, false , false , three, p1, nullptr );
147
147
tst_interval (s1, s2, 1 );
148
- s1 = ism.mk (false , false , m_two, true , false , two, p1);
148
+ s1 = ism.mk (false , false , m_two, true , false , two, p1, nullptr );
149
149
tst_interval (s1, s2, 2 );
150
- s1 = ism.mk (false , false , two, false , false , two, p1);
151
- s2 = ism.mk (false , false , two, false , false , three, p2);
150
+ s1 = ism.mk (false , false , two, false , false , two, p1, nullptr );
151
+ s2 = ism.mk (false , false , two, false , false , three, p2, nullptr );
152
152
tst_interval (s1, s2, 1 );
153
153
154
154
// Case
155
155
// s1: [ ... ] [ ... ]
156
156
// s2: [ .. ] [ ... ] [ ... ]
157
- s1 = ism.mk (false , false , m_two, false , false , zero, p1);
158
- s3 = ism.mk (false , false , one, false , false , three, p1);
157
+ s1 = ism.mk (false , false , m_two, false , false , zero, p1, nullptr );
158
+ s3 = ism.mk (false , false , one, false , false , three, p1, nullptr );
159
159
s1 = ism.mk_union (s1, s3);
160
- s2 = ism.mk (true , true , zero, false , false , m_sqrt2, p2);
160
+ s2 = ism.mk (true , true , zero, false , false , m_sqrt2, p2, nullptr );
161
161
tst_interval (s1, s2, 3 );
162
- s3 = ism.mk (false , false , one, false , false , sqrt2, p2);
162
+ s3 = ism.mk (false , false , one, false , false , sqrt2, p2, nullptr );
163
163
s2 = ism.mk_union (s2, s3);
164
- s3 = ism.mk (false , false , two, true , true , zero, p2);
164
+ s3 = ism.mk (false , false , two, true , true , zero, p2, nullptr );
165
165
s2 = ism.mk_union (s2, s3);
166
166
tst_interval (s1, s2, 4 );
167
167
168
168
// Case
169
- s1 = ism.mk (true , true , zero, false , false , one, p1);
170
- s2 = ism.mk (true , false , one, true , true , zero, p2);
169
+ s1 = ism.mk (true , true , zero, false , false , one, p1, nullptr );
170
+ s2 = ism.mk (true , false , one, true , true , zero, p2, nullptr );
171
171
tst_interval (s1, s2, 2 );
172
- s2 = ism.mk (true , false , one, false , false , two, p2);
173
- s3 = ism.mk (false , false , two, true , true , zero, p1);
172
+ s2 = ism.mk (true , false , one, false , false , two, p2, nullptr );
173
+ s3 = ism.mk (false , false , two, true , true , zero, p1, nullptr );
174
174
s2 = ism.mk_union (s2, s3);
175
175
tst_interval (s1, s2, 3 );
176
176
}
@@ -189,7 +189,7 @@ static nlsat::interval_set_ref mk_random(nlsat::interval_set_manager & ism, anum
189
189
int next = prev + (gen () % space);
190
190
bool open = gen () % 2 == 0 ;
191
191
am.set (upper, next);
192
- r = ism.mk (true , true , lower, open , false , upper, lit);
192
+ r = ism.mk (true , true , lower, open , false , upper, lit, nullptr );
193
193
prev = next;
194
194
}
195
195
@@ -202,7 +202,7 @@ static nlsat::interval_set_ref mk_random(nlsat::interval_set_manager & ism, anum
202
202
u++;
203
203
am.set (lower, l);
204
204
am.set (upper, u);
205
- curr = ism.mk (lower_open, false , lower, upper_open, false , upper, lit);
205
+ curr = ism.mk (lower_open, false , lower, upper_open, false , upper, lit, nullptr );
206
206
r = ism.mk_union (r, curr);
207
207
prev = u;
208
208
}
@@ -211,7 +211,7 @@ static nlsat::interval_set_ref mk_random(nlsat::interval_set_manager & ism, anum
211
211
int next = prev + (gen () % space);
212
212
bool open = gen () % 2 == 0 ;
213
213
am.set (lower, next);
214
- curr = ism.mk (open , false , lower, true , true , upper, lit);
214
+ curr = ism.mk (open , false , lower, true , true , upper, lit, nullptr );
215
215
r = ism.mk_union (r, curr);
216
216
}
217
217
return r;
@@ -226,11 +226,12 @@ static void check_subset_result(nlsat::interval_set_ref const & s1,
226
226
nlsat::interval_set_ref tmp (ism);
227
227
unsigned num = ism.num_intervals (r);
228
228
nlsat::literal_vector lits;
229
- ism.get_justifications (r, lits);
229
+ ptr_vector<nlsat::clause> clauses;
230
+ ism.get_justifications (r, lits, clauses);
230
231
ENSURE (lits.size () <= 2 );
231
232
for (unsigned i = 0 ; i < num; i++) {
232
233
tmp = ism.get_interval (r, i);
233
- ism.get_justifications (tmp, lits);
234
+ ism.get_justifications (tmp, lits, clauses );
234
235
ENSURE (lits.size () == 1 );
235
236
if (lits[0 ] == l1) {
236
237
ENSURE (ism.subset (tmp, s1));
@@ -296,10 +297,10 @@ static void tst5() {
296
297
scoped_anum zero (am);
297
298
am.set (zero, 0 );
298
299
as.set (0 , zero);
299
- auto i = ev.infeasible_intervals (a, true );
300
+ auto i = ev.infeasible_intervals (a, true , nullptr );
300
301
std::cout << " 1) " << i << " \n " ;
301
302
as.set (1 , zero);
302
- auto i2 = ev.infeasible_intervals (a, true );
303
+ auto i2 = ev.infeasible_intervals (a, true , nullptr );
303
304
std::cout << " 2) " << i2 << " \n " ;
304
305
}
305
306
0 commit comments