Skip to content

Commit 5bdb455

Browse files
authored
Merge pull request #4614 from allredj/string-non-neg-constr-before-solve
String solver: add non-negative length constraint before solving [TG-7439]
2 parents b5d0cea + 8cd17fe commit 5bdb455

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/solvers/strings/string_refinement.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,13 @@ decision_proceduret::resultt string_refinementt::dec_solve()
737737
for(const exprt &lemma : generator.constraints.existential)
738738
add_lemma(lemma);
739739

740+
// All generated strings should have non-negative length
741+
for(const auto &string : generator.array_pool.created_strings())
742+
{
743+
add_lemma(greater_or_equal_to(
744+
string.length(), from_integer(0, string.length_type())));
745+
}
746+
740747
// Initial try without index set
741748
const auto get = [this](const exprt &expr) { return this->get(expr); };
742749
dependencies.clean_cache();
@@ -776,13 +783,6 @@ decision_proceduret::resultt string_refinementt::dec_solve()
776783
for(const auto &instance : initial_instances)
777784
add_lemma(instance);
778785

779-
// All generated strings should have non-negative length
780-
for(const auto &string : generator.array_pool.created_strings())
781-
{
782-
add_lemma(binary_relation_exprt{
783-
string.length(), ID_ge, from_integer(0, string.length_type())});
784-
}
785-
786786
while((loop_bound_--) > 0)
787787
{
788788
dependencies.clean_cache();

0 commit comments

Comments
 (0)