Skip to content

Commit dd03003

Browse files
committed
TG-672 Fixed correctness issue in main loop of algorithm and added first UNSAT return
1 parent dfa3ffd commit dd03003

File tree

1 file changed

+13
-31
lines changed

1 file changed

+13
-31
lines changed

src/solvers/refinement/string_refinement.cpp

+13-31
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,11 @@ decision_proceduret::resultt string_refinementt::dec_solve()
760760
return resultt::D_SATISFIABLE;
761761
}
762762
}
763+
else
764+
{
765+
debug() << "check_SAT: got UNSAT or ERROR" << eom;
766+
return res;
767+
}
763768

764769
initial_index_set(index_set, current_index_set, ns, universal_axioms);
765770
update_index_set(index_set, current_index_set, ns, current_constraints);
@@ -812,44 +817,21 @@ decision_proceduret::resultt string_refinementt::dec_solve()
812817
// We will then relaunch the solver with these added lemmas.
813818
current_index_set.clear();
814819
update_index_set(index_set, current_index_set, ns, current_constraints);
815-
current_constraints.clear();
816-
for(const auto &lemma :
817-
generate_instantiations(
818-
debug(), current_index_set, universal_axioms))
819-
add_lemma(lemma);
820-
display_current_index_set(debug(), ns, current_index_set);
821820

822821
if(current_index_set.empty())
823822
{
824823
debug() << "current index set is empty" << eom;
825-
if(config_.trace)
826-
{
827-
const auto lemmas=concretize_results(
828-
get,
829-
found_length,
830-
found_content,
831-
symbol_resolve,
832-
index_set,
833-
generator.max_string_length,
834-
debug(),
835-
ns,
836-
generator.get_created_strings(),
837-
current_index_set,
838-
universal_axioms);
839-
for(const auto &lemma : lemmas)
840-
add_lemma(lemma);
841-
display_current_index_set(debug(), ns, current_index_set);
842-
return resultt::D_SATISFIABLE;
843-
}
844-
else
845-
{
846-
debug() << "check_SAT: the model is correct and "
847-
<< "does not need concretizing" << eom;
848-
return resultt::D_SATISFIABLE;
849-
}
824+
return resultt::D_ERROR;
850825
}
851826

852827
display_index_set(debug(), ns, current_index_set, index_set);
828+
current_constraints.clear();
829+
for(const auto &instance :
830+
generate_instantiations(
831+
debug(), current_index_set, universal_axioms))
832+
add_lemma(instance);
833+
display_current_index_set(debug(), ns, current_index_set);
834+
853835
debug() << "instantiating NOT_CONTAINS constraints" << '\n';
854836
for(unsigned i=0; i<not_contains_axioms.size(); i++)
855837
{

0 commit comments

Comments
 (0)