Skip to content

Commit b5fe7e3

Browse files
committed
TG-672 Initial refactoring (renaming, code removal)
Initial refactoring step. Dead code removed and renaming for clarity.
1 parent 438d9f0 commit b5fe7e3

File tree

2 files changed

+30
-51
lines changed

2 files changed

+30
-51
lines changed

src/solvers/refinement/string_refinement.cpp

+29-48
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,13 @@ Author: Alberto Griggio, [email protected]
1919

2020
#include <solvers/refinement/string_refinement.h>
2121

22-
#include <sstream>
2322
#include <iomanip>
2423
#include <stack>
2524
#include <functional>
26-
#include <ansi-c/string_constant.h>
27-
#include <util/cprover_prefix.h>
2825
#include <util/expr_iterator.h>
29-
#include <util/replace_expr.h>
30-
#include <util/refined_string_type.h>
3126
#include <util/simplify_expr.h>
3227
#include <solvers/sat/satcheck.h>
33-
#include <solvers/refinement/string_refinement_invariant.h>
3428
#include <solvers/refinement/string_constraint_instantiation.h>
35-
#include <langapi/language_util.h>
3629
#include <java_bytecode/java_types.h>
3730
#include <util/optional.h>
3831

@@ -86,7 +79,7 @@ static void update_index_set(
8679
std::map<exprt, std::set<exprt>> &index_set,
8780
std::map<exprt, std::set<exprt>> &current_index_set,
8881
const namespacet &ns,
89-
const std::vector<exprt> &cur);
82+
const std::vector<exprt> &current_constraints);
9083

9184
static void update_index_set(
9285
std::map<exprt, std::set<exprt>> &index_set,
@@ -690,14 +683,14 @@ decision_proceduret::resultt string_refinementt::dec_solve()
690683
replace_expr(symbol_resolve, axiom);
691684
if(axiom.id()==ID_string_constraint)
692685
{
693-
string_constraintt nc_axiom=
686+
string_constraintt univ_axiom=
694687
to_string_constraint(axiom);
695-
is_valid_string_constraint(error(), ns, nc_axiom);
688+
is_valid_string_constraint(error(), ns, univ_axiom);
696689
DATA_INVARIANT(
697-
is_valid_string_constraint(error(), ns, nc_axiom),
690+
is_valid_string_constraint(error(), ns, univ_axiom),
698691
string_refinement_invariantt(
699692
"string constraints satisfy their invariant"));
700-
universal_axioms.push_back(nc_axiom);
693+
universal_axioms.push_back(univ_axiom);
701694
}
702695
else if(axiom.id()==ID_string_not_contains_constraint)
703696
{
@@ -725,9 +718,9 @@ decision_proceduret::resultt string_refinementt::dec_solve()
725718
decision_proceduret::resultt res=supert::dec_solve();
726719
if(res==resultt::D_SATISFIABLE)
727720
{
728-
bool success;
729-
std::vector<exprt> lemmas;
730-
std::tie(success, lemmas)=check_axioms(
721+
bool satisfied;
722+
std::vector<exprt> counter_examples;
723+
std::tie(satisfied, counter_examples)=check_axioms(
731724
universal_axioms,
732725
not_contains_axioms,
733726
generator,
@@ -738,10 +731,10 @@ decision_proceduret::resultt string_refinementt::dec_solve()
738731
config_.use_counter_example,
739732
supert::config_.ui,
740733
symbol_resolve);
741-
if(!success)
734+
if(!satisfied)
742735
{
743-
for(const auto &lemma : lemmas)
744-
add_lemma(lemma);
736+
for(const auto &counter : counter_examples)
737+
add_lemma(counter);
745738
debug() << "check_SAT: got SAT but the model is not correct" << eom;
746739
}
747740
else
@@ -757,11 +750,11 @@ decision_proceduret::resultt string_refinementt::dec_solve()
757750
}
758751

759752
initial_index_set(index_set, current_index_set, ns, universal_axioms);
760-
update_index_set(index_set, current_index_set, ns, cur);
761-
cur.clear();
762-
for(const auto &lemma :
753+
update_index_set(index_set, current_index_set, ns, current_constraints);
754+
current_constraints.clear();
755+
for(const auto &instance :
763756
generate_instantiations(debug(), current_index_set, universal_axioms))
764-
add_lemma(lemma);
757+
add_lemma(instance);
765758
display_current_index_set(debug(), ns, current_index_set);
766759

767760
while((loop_bound_--)>0)
@@ -770,9 +763,9 @@ decision_proceduret::resultt string_refinementt::dec_solve()
770763

771764
if(res==resultt::D_SATISFIABLE)
772765
{
773-
bool success;
774-
std::vector<exprt> lemmas;
775-
std::tie(success, lemmas)=check_axioms(
766+
bool satisfied;
767+
std::vector<exprt> counter_examples;
768+
std::tie(satisfied, counter_examples)=check_axioms(
776769
universal_axioms,
777770
not_contains_axioms,
778771
generator,
@@ -783,10 +776,10 @@ decision_proceduret::resultt string_refinementt::dec_solve()
783776
config_.use_counter_example,
784777
supert::config_.ui,
785778
symbol_resolve);
786-
if(!success)
779+
if(!satisfied)
787780
{
788-
for(const auto &lemma : lemmas)
789-
add_lemma(lemma);
781+
for(const auto &counter : counter_examples)
782+
add_lemma(counter);
790783
debug() << "check_SAT: got SAT but the model is not correct" << eom;
791784
}
792785
else
@@ -806,8 +799,8 @@ decision_proceduret::resultt string_refinementt::dec_solve()
806799
// and instantiating universal formulas with this indices.
807800
// We will then relaunch the solver with these added lemmas.
808801
current_index_set.clear();
809-
update_index_set(index_set, current_index_set, ns, cur);
810-
cur.clear();
802+
update_index_set(index_set, current_index_set, ns, current_constraints);
803+
current_constraints.clear();
811804
for(const auto &lemma :
812805
generate_instantiations(
813806
debug(), current_index_set, universal_axioms))
@@ -849,16 +842,16 @@ decision_proceduret::resultt string_refinementt::dec_solve()
849842
for(unsigned i=0; i<not_contains_axioms.size(); i++)
850843
{
851844
debug() << "constraint " << i << '\n';
852-
const std::vector<exprt> lemmas=
845+
const std::vector<exprt> instances=
853846
instantiate_not_contains(
854847
debug(),
855848
ns,
856849
not_contains_axioms[i],
857850
index_set,
858851
current_index_set,
859852
generator);
860-
for(const exprt &lemma : lemmas)
861-
add_lemma(lemma);
853+
for(const exprt &instance : instances)
854+
add_lemma(instance);
862855
}
863856
}
864857
else
@@ -872,18 +865,6 @@ decision_proceduret::resultt string_refinementt::dec_solve()
872865
return resultt::D_ERROR;
873866
}
874867

875-
/// fills as many 0 as necessary in the bit vectors to have the right width
876-
/// \par parameters: a Boolean and a expression with the desired type
877-
/// \return a bit vector
878-
bvt string_refinementt::convert_bool_bv(const exprt &boole, const exprt &orig)
879-
{
880-
bvt ret;
881-
ret.push_back(convert(boole));
882-
size_t width=boolbv_width(orig.type());
883-
ret.resize(width, const_literal(false));
884-
return ret;
885-
}
886-
887868
/// add the given lemma to the solver
888869
/// \par parameters: a lemma and Boolean value stating whether the lemma should
889870
/// be added to the index set.
@@ -893,7 +874,7 @@ void string_refinementt::add_lemma(
893874
if(!seen_instances.insert(lemma).second)
894875
return;
895876

896-
cur.push_back(lemma);
877+
current_constraints.push_back(lemma);
897878

898879
exprt simple_lemma=lemma;
899880
if(_simplify)
@@ -1762,9 +1743,9 @@ static void update_index_set(
17621743
std::map<exprt, std::set<exprt>> &index_set,
17631744
std::map<exprt, std::set<exprt>> &current_index_set,
17641745
const namespacet &ns,
1765-
const std::vector<exprt> &cur)
1746+
const std::vector<exprt> &current_constraints)
17661747
{
1767-
for(const auto &axiom : cur)
1748+
for(const auto &axiom : current_constraints)
17681749
update_index_set(index_set, current_index_set, ns, axiom);
17691750
}
17701751

src/solvers/refinement/string_refinement.h

+1-3
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,10 @@ class string_refinementt final: public bv_refinementt
6565
typedef std::list<exprt> exprt_listt;
6666

6767
string_refinementt(const infot &, bool);
68-
bvt convert_bool_bv(const exprt &boole, const exprt &orig);
6968

7069
const configt config_;
7170
std::size_t loop_bound_;
7271
string_constraint_generatort generator;
73-
expr_sett nondet_arrays;
7472

7573
// Simple constraints that have been given to the solver
7674
expr_sett seen_instances;
@@ -80,7 +78,7 @@ class string_refinementt final: public bv_refinementt
8078
std::vector<string_not_contains_constraintt> not_contains_axioms;
8179

8280
// Unquantified lemmas that have newly been added
83-
std::vector<exprt> cur;
81+
std::vector<exprt> current_constraints;
8482

8583
// See the definition in the PASS article
8684
// Warning: this is indexed by array_expressions and not string expressions

0 commit comments

Comments
 (0)