Skip to content

Commit 918297c

Browse files
author
Lukasz A.J. Wrona
committed
static concretize length
1 parent a4c8cf5 commit 918297c

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

src/solvers/refinement/string_refinement.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,11 @@ void string_refinementt::concretize_results()
514514

515515
/// For each string whose length has been solved, add constants to the map
516516
/// `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)
518522
{
519523
for(const auto &pair : symbol_resolve)
520524
{
@@ -524,9 +528,9 @@ void string_refinementt::concretize_lengths()
524528
exprt content=str->content();
525529
replace_expr(symbol_resolve, content);
526530
found_length[content]=length;
527-
}
531+
}
528532
}
529-
for(const auto &it : generator.get_created_strings())
533+
for(const auto &it : created_strings)
530534
{
531535
if(const auto str=expr_cast<string_exprt>(it))
532536
{
@@ -688,7 +692,11 @@ decision_proceduret::resultt string_refinementt::dec_solve()
688692
else
689693
{
690694
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());
692700
return resultt::D_SATISFIABLE;
693701
}
694702
}
@@ -729,7 +737,11 @@ decision_proceduret::resultt string_refinementt::dec_solve()
729737
else
730738
{
731739
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());
733745
return resultt::D_SATISFIABLE;
734746
}
735747

src/solvers/refinement/string_refinement.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ class string_refinementt final: public bv_refinementt
109109

110110
void concretize_string(const exprt &expr);
111111
void concretize_results();
112-
void concretize_lengths();
113112

114113
exprt get_array(const exprt &arr, const exprt &size) const;
115114
exprt get_array(const exprt &arr) const;

0 commit comments

Comments
 (0)