@@ -514,7 +514,11 @@ void string_refinementt::concretize_results()
514
514
515
515
// / For each string whose length has been solved, add constants to the map
516
516
// / `found_length`
517
- void string_refinementt::concretize_lengths ()
517
+ void concretize_lengths (
518
+ std::map<exprt, exprt> &found_length,
519
+ std::function<exprt(const exprt&)> get,
520
+ const replace_mapt &symbol_resolve,
521
+ const std::set<string_exprt> &created_strings)
518
522
{
519
523
for (const auto &pair : symbol_resolve)
520
524
{
@@ -524,9 +528,9 @@ void string_refinementt::concretize_lengths()
524
528
exprt content=str->content ();
525
529
replace_expr (symbol_resolve, content);
526
530
found_length[content]=length;
527
- }
531
+ }
528
532
}
529
- for (const auto &it : generator. get_created_strings () )
533
+ for (const auto &it : created_strings )
530
534
{
531
535
if (const auto str=expr_cast<string_exprt>(it))
532
536
{
@@ -688,7 +692,11 @@ decision_proceduret::resultt string_refinementt::dec_solve()
688
692
else
689
693
{
690
694
debug () << " check_SAT: the model is correct" << eom;
691
- concretize_lengths ();
695
+ concretize_lengths (
696
+ found_length,
697
+ [](const exprt& expr){ return expr; },
698
+ symbol_resolve,
699
+ generator.get_created_strings ());
692
700
return resultt::D_SATISFIABLE;
693
701
}
694
702
}
@@ -729,7 +737,11 @@ decision_proceduret::resultt string_refinementt::dec_solve()
729
737
else
730
738
{
731
739
debug () << " check_SAT: the model is correct" << eom;
732
- concretize_lengths ();
740
+ concretize_lengths (
741
+ found_length,
742
+ [](const exprt& expr){ return expr; },
743
+ symbol_resolve,
744
+ generator.get_created_strings ());
733
745
return resultt::D_SATISFIABLE;
734
746
}
735
747
0 commit comments