@@ -115,7 +115,8 @@ namespace sls {
115
115
}
116
116
else {
117
117
g.merge (nmap, nsel, nullptr );
118
- VERIFY (g.propagate ());
118
+ g.propagate ();
119
+ VERIFY (!g.inconsistent ());
119
120
}
120
121
}
121
122
@@ -143,8 +144,9 @@ namespace sls {
143
144
if (are_distinct (nsel, val))
144
145
add_store_axiom1 (n->get_app ());
145
146
else {
146
- g.merge (nsel, val, nullptr );
147
- VERIFY (g.propagate ());
147
+ g.merge (nsel, val, nullptr );
148
+ g.propagate ();
149
+ VERIFY (!g.inconsistent ());
148
150
}
149
151
}
150
152
@@ -161,7 +163,8 @@ namespace sls {
161
163
add_store_axiom2 (sto->get_app (), sel->get_app ());
162
164
else {
163
165
g.merge (nsel, sel, nullptr );
164
- VERIFY (g.propagate ());
166
+ g.propagate ();
167
+ VERIFY (!g.inconsistent ());
165
168
}
166
169
}
167
170
@@ -178,7 +181,8 @@ namespace sls {
178
181
add_store_axiom2 (sto->get_app (), sel->get_app ());
179
182
else {
180
183
g.merge (nsel, sel, nullptr );
181
- VERIFY (g.propagate ());
184
+ g.propagate ();
185
+ VERIFY (!g.inconsistent ());
182
186
}
183
187
}
184
188
@@ -196,7 +200,8 @@ namespace sls {
196
200
}
197
201
else {
198
202
g.merge (nsel, sel, nullptr );
199
- VERIFY (g.propagate ());
203
+ g.propagate ();
204
+ VERIFY (!g.inconsistent ());
200
205
}
201
206
}
202
207
@@ -265,18 +270,19 @@ namespace sls {
265
270
if (a.is_array (t))
266
271
continue ;
267
272
auto v = ctx.get_value (t);
268
- IF_VERBOSE (3 , verbose_stream () << " init " << mk_bounded_pp (t, m) << " := " << mk_bounded_pp (v, m) << " \n " );
273
+ IF_VERBOSE (3 , verbose_stream () << " init " << mk_bounded_pp (t, m) << " := " << mk_bounded_pp (v, m) << " " << g. inconsistent () << " \n " );
269
274
n2 = g.find (v);
270
275
n2 = n2 ? n2: g.mk (v, 0 , 0 , nullptr );
271
- g.merge (n1, n2, nullptr );
276
+ g.merge (n1, n2, nullptr );
272
277
}
273
278
for (auto lit : ctx.root_literals ()) {
274
279
if (!ctx.is_true (lit) || lit.sign ())
275
280
continue ;
276
281
auto e = ctx.atom (lit.var ());
277
- expr* x, * y;
282
+ expr* x = nullptr , * y = nullptr ;
278
283
if (e && m.is_eq (e, x, y))
279
284
g.merge (g.find (x), g.find (y), nullptr );
285
+
280
286
}
281
287
282
288
IF_VERBOSE (3 , display (verbose_stream ()));
@@ -297,7 +303,6 @@ namespace sls {
297
303
kv[n].insert (select_args (p), val);
298
304
}
299
305
}
300
- display (verbose_stream ());
301
306
}
302
307
303
308
expr_ref array_plugin::get_value (expr* e) {
0 commit comments