@@ -196,38 +196,40 @@ SCENARIO("instantiate_not_contains",
196
196
symbol_tablet symtab;
197
197
const namespacet empty_ns (symtab);
198
198
string_constraint_generatort generator (ns);
199
- exprt res=generator.add_axioms_for_function_application (func);
199
+ const auto pair = generator.add_axioms_for_function_application (
200
+ generator.fresh_symbol , func);
201
+ const exprt &res = pair.first ;
202
+ const string_constraintst &constraints = pair.second ;
203
+
200
204
std::string axioms;
201
205
std::vector<string_not_contains_constraintt> nc_axioms;
206
+ std::map<string_not_contains_constraintt, symbol_exprt> witnesses;
202
207
203
- const auto constraints = generator.get_constraints ();
204
208
std::accumulate (
205
- constraints.begin (),
206
- constraints.end (),
209
+ constraints.universal . begin (),
210
+ constraints.universal . end (),
207
211
axioms,
208
212
[&](const std::string &accu, string_constraintt sc) {
209
213
simplify (sc.body , ns);
210
214
return accu + to_string (sc) + " \n\n " ;
211
215
});
212
216
213
- const auto nc_contraints = generator.get_not_contains_constraints ();
214
217
axioms = std::accumulate (
215
- nc_contraints .begin (),
216
- nc_contraints .end (),
218
+ constraints. not_contains .begin (),
219
+ constraints. not_contains .end (),
217
220
axioms,
218
221
[&](const std::string &accu, string_not_contains_constraintt sc) {
219
222
simplify (sc, ns);
220
- generator. witness [sc] = generator.fresh_symbol (" w" , t.witness_type ());
223
+ witnesses [sc] = generator.fresh_symbol (" w" , t.witness_type ());
221
224
nc_axioms.push_back (sc);
222
225
std::string s;
223
226
java_lang->from_expr (sc, s, ns);
224
227
return accu + s + " \n\n " ;
225
228
});
226
229
227
- const auto lemmas = generator.get_lemmas ();
228
230
axioms = std::accumulate (
229
- lemmas .begin (),
230
- lemmas .end (),
231
+ constraints. existential .begin (),
232
+ constraints. existential .end (),
231
233
axioms,
232
234
[&](const std::string &accu, exprt axiom) {
233
235
simplify (axiom, ns);
@@ -251,8 +253,8 @@ SCENARIO("instantiate_not_contains",
251
253
// Instantiate the lemmas
252
254
for (const auto &axiom : nc_axioms)
253
255
{
254
- const std::vector<exprt> l= instantiate_not_contains (
255
- axiom, product (index_set_ab, index_set_b), generator );
256
+ const std::vector<exprt> l = instantiate_not_contains (
257
+ axiom, product (index_set_ab, index_set_b), witnesses );
256
258
lemmas.insert (lemmas.end (), l.begin (), l.end ());
257
259
}
258
260
@@ -294,8 +296,8 @@ SCENARIO("instantiate_not_contains",
294
296
symbol_tablet symtab;
295
297
const namespacet empty_ns (symtab);
296
298
string_constraint_generatort generator (ns);
297
- generator. witness [vacuous]=
298
- generator.fresh_symbol (" w" , t.witness_type ());
299
+ std::map<string_not_contains_constraintt, symbol_exprt> witnesses;
300
+ witnesses[vacuous] = generator.fresh_symbol (" w" , t.witness_type ());
299
301
300
302
INFO (" Original axiom:\n " );
301
303
std::string s;
@@ -308,8 +310,8 @@ SCENARIO("instantiate_not_contains",
308
310
const std::set<exprt> index_set_a = full_index_set (a_array);
309
311
310
312
// Instantiate the lemmas
311
- std::vector<exprt> lemmas= instantiate_not_contains (
312
- vacuous, product (index_set_a, index_set_a), generator );
313
+ std::vector<exprt> lemmas = instantiate_not_contains (
314
+ vacuous, product (index_set_a, index_set_a), witnesses );
313
315
314
316
const exprt conj=combine_lemmas (lemmas, ns);
315
317
const std::string info=create_info (lemmas, ns);
@@ -349,8 +351,8 @@ SCENARIO("instantiate_not_contains",
349
351
symbol_tablet symtab;
350
352
const namespacet ns (symtab);
351
353
string_constraint_generatort generator (ns);
352
- generator. witness [trivial]=
353
- generator.fresh_symbol (" w" , t.witness_type ());
354
+ std::map<string_not_contains_constraintt, symbol_exprt> witnesses;
355
+ witnesses[trivial] = generator.fresh_symbol (" w" , t.witness_type ());
354
356
355
357
INFO (" Original axiom:\n " );
356
358
std::string s;
@@ -364,8 +366,8 @@ SCENARIO("instantiate_not_contains",
364
366
const std::set<exprt> index_set_b = full_index_set (b_array);
365
367
366
368
// Instantiate the lemmas
367
- std::vector<exprt> lemmas= instantiate_not_contains (
368
- trivial, product (index_set_a, index_set_b), generator );
369
+ std::vector<exprt> lemmas = instantiate_not_contains (
370
+ trivial, product (index_set_a, index_set_b), witnesses );
369
371
370
372
const exprt conj=combine_lemmas (lemmas, ns);
371
373
const std::string info=create_info (lemmas, ns);
@@ -405,8 +407,8 @@ SCENARIO("instantiate_not_contains",
405
407
symbol_tablet symtab;
406
408
const namespacet empty_ns (symtab);
407
409
string_constraint_generatort generator (ns);
408
- generator. witness [trivial]=
409
- generator.fresh_symbol (" w" , t.witness_type ());
410
+ std::map<string_not_contains_constraintt, symbol_exprt> witnesses;
411
+ witnesses[trivial] = generator.fresh_symbol (" w" , t.witness_type ());
410
412
411
413
INFO (" Original axiom:\n " );
412
414
std::string s;
@@ -417,12 +419,12 @@ SCENARIO("instantiate_not_contains",
417
419
{
418
420
// Making index sets
419
421
const std::set<exprt> index_set_a = full_index_set (a_array);
420
- const std::set<exprt> index_set_empty=
421
- { generator.fresh_exist_index (" z" , t.length_type ())};
422
+ const std::set<exprt> index_set_empty = {
423
+ generator.fresh_symbol (" z" , t.length_type ())};
422
424
423
425
// Instantiate the lemmas
424
- std::vector<exprt> lemmas= instantiate_not_contains (
425
- trivial, product (index_set_a, index_set_empty), generator );
426
+ std::vector<exprt> lemmas = instantiate_not_contains (
427
+ trivial, product (index_set_a, index_set_empty), witnesses );
426
428
427
429
const exprt conj=combine_lemmas (lemmas, ns);
428
430
const std::string info=create_info (lemmas, ns);
@@ -464,8 +466,8 @@ SCENARIO("instantiate_not_contains",
464
466
const namespacet empty_ns (symtab);
465
467
466
468
string_constraint_generatort generator (ns);
467
- generator. witness [trivial]=
468
- generator.fresh_symbol (" w" , t.witness_type ());
469
+ std::map<string_not_contains_constraintt, symbol_exprt> witnesses;
470
+ witnesses[trivial] = generator.fresh_symbol (" w" , t.witness_type ());
469
471
470
472
INFO (" Original axiom:\n " );
471
473
std::string s;
@@ -478,8 +480,8 @@ SCENARIO("instantiate_not_contains",
478
480
const std::set<exprt> index_set_ab = full_index_set (ab_array);
479
481
480
482
// Instantiate the lemmas
481
- std::vector<exprt> lemmas= instantiate_not_contains (
482
- trivial, product (index_set_ab, index_set_ab), generator );
483
+ std::vector<exprt> lemmas = instantiate_not_contains (
484
+ trivial, product (index_set_ab, index_set_ab), witnesses );
483
485
484
486
const exprt conj=combine_lemmas (lemmas, ns);
485
487
const std::string info=create_info (lemmas, ns);
@@ -520,8 +522,8 @@ SCENARIO("instantiate_not_contains",
520
522
symbol_tablet symtab;
521
523
const namespacet empty_ns (symtab);
522
524
string_constraint_generatort generator (ns);
523
- generator. witness [trivial]=
524
- generator.fresh_symbol (" w" , t.witness_type ());
525
+ std::map<string_not_contains_constraintt, symbol_exprt> witnesses;
526
+ witnesses[trivial] = generator.fresh_symbol (" w" , t.witness_type ());
525
527
526
528
INFO (" Original axiom:\n " );
527
529
std::string s;
@@ -535,8 +537,8 @@ SCENARIO("instantiate_not_contains",
535
537
const std::set<exprt> index_set_cd = full_index_set (cd_array);
536
538
537
539
// Instantiate the lemmas
538
- std::vector<exprt> lemmas= instantiate_not_contains (
539
- trivial, product (index_set_ab, index_set_cd), generator );
540
+ std::vector<exprt> lemmas = instantiate_not_contains (
541
+ trivial, product (index_set_ab, index_set_cd), witnesses );
540
542
541
543
const exprt conj=combine_lemmas (lemmas, ns);
542
544
const std::string info=create_info (lemmas, ns);
0 commit comments