Skip to content

Commit

Permalink
Get rid of string_max_length field
Browse files Browse the repository at this point in the history
In constraint generator, this was used for adding default axioms but is
no longer used.
  • Loading branch information
romainbrenguier committed Apr 23, 2018
1 parent d726577 commit b83182f
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 37 deletions.
2 changes: 1 addition & 1 deletion src/cbmc/cbmc_solvers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ std::unique_ptr<cbmc_solverst::solvert> cbmc_solverst::get_string_refinement()
info.refinement_bound=DEFAULT_MAX_NB_REFINEMENT;
info.ui=ui;
if(options.get_bool_option("string-max-length"))
info.string_max_length=options.get_signed_int_option("string-max-length");
info.max_string_length = options.get_signed_int_option("string-max-length");
info.trace=options.get_bool_option("trace");
if(options.get_bool_option("max-node-refinement"))
info.max_node_refinement=
Expand Down
10 changes: 1 addition & 9 deletions src/solvers/refinement/string_constraint_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,7 @@ class string_constraint_generatort final
// Used by format function
class format_specifiert;

/// Arguments pack for the string_constraint_generator constructor
struct infot
{
/// Max length of non-deterministic strings
size_t string_max_length=std::numeric_limits<size_t>::max();
};

string_constraint_generatort(const infot& info, const namespacet& ns);
explicit string_constraint_generatort(const namespacet &ns);

/// Axioms are of three kinds: universally quantified string constraint,
/// not contains string constraints and simple formulas.
Expand Down Expand Up @@ -401,7 +394,6 @@ class string_constraint_generatort final

// MEMBERS
public:
const size_t max_string_length;
// Used to store information about witnesses for not_contains constraints
std::map<string_not_contains_constraintt, symbol_exprt> witness;
private:
Expand Down
6 changes: 2 additions & 4 deletions src/solvers/refinement/string_constraint_generator_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,8 @@ Author: Romain Brenguier, [email protected]
#include <util/string_constant.h>
#include <util/deprecate.h>

string_constraint_generatort::string_constraint_generatort(
const string_constraint_generatort::infot &info,
const namespacet &ns)
: array_pool(fresh_symbol), max_string_length(info.string_max_length), ns(ns)
string_constraint_generatort::string_constraint_generatort(const namespacet &ns)
: array_pool(fresh_symbol), ns(ns)
{
}

Expand Down
23 changes: 13 additions & 10 deletions src/solvers/refinement/string_refinement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,14 @@ static bool validate(const string_refinementt::infot &info)
return true;
}

string_refinementt::string_refinementt(const infot &info, bool):
supert(info),
config_(info),
loop_bound_(info.refinement_bound),
generator(info, *info.ns) { }
string_refinementt::string_refinementt(const infot &info, bool)
: supert(info),
config_(info),
loop_bound_(info.refinement_bound),
max_string_length(info.max_string_length),
generator(*info.ns)
{
}

string_refinementt::string_refinementt(const infot &info):
string_refinementt(info, validate(info)) { }
Expand Down Expand Up @@ -734,13 +737,13 @@ decision_proceduret::resultt string_refinementt::dec_solve()
{
bool satisfied;
std::vector<exprt> counter_examples;
std::tie(satisfied, counter_examples)=check_axioms(
std::tie(satisfied, counter_examples) = check_axioms(
axioms,
generator,
get,
debug(),
ns,
generator.max_string_length,
max_string_length,
config_.use_counter_example,
supert::config_.ui,
symbol_resolve);
Expand Down Expand Up @@ -778,13 +781,13 @@ decision_proceduret::resultt string_refinementt::dec_solve()
{
bool satisfied;
std::vector<exprt> counter_examples;
std::tie(satisfied, counter_examples)=check_axioms(
std::tie(satisfied, counter_examples) = check_axioms(
axioms,
generator,
get,
debug(),
ns,
generator.max_string_length,
max_string_length,
config_.use_counter_example,
supert::config_.ui,
symbol_resolve);
Expand Down Expand Up @@ -2143,7 +2146,7 @@ exprt string_refinementt::get(const exprt &expr) const

if(
const auto arr_model_opt =
get_array(super_get, ns, generator.max_string_length, debug(), arr))
get_array(super_get, ns, max_string_length, debug(), arr))
return *arr_model_opt;

if(generator.get_created_strings().count(arr))
Expand Down
3 changes: 2 additions & 1 deletion src/solvers/refinement/string_refinement.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ class string_refinementt final: public bv_refinementt
/// Concretize strings after solver is finished
bool trace=false;
bool use_counter_example=true;
std::size_t max_string_length;
};
public:
/// string_refinementt constructor arguments
struct infot : public bv_refinementt::infot,
public string_constraint_generatort::infot,
public configt
{
};
Expand All @@ -69,6 +69,7 @@ class string_refinementt final: public bv_refinementt

const configt config_;
std::size_t loop_bound_;
std::size_t max_string_length;
string_constraint_generatort generator;

// Simple constraints that have been given to the solver
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,8 +195,7 @@ SCENARIO("instantiate_not_contains",
// Generating the corresponding axioms and simplifying, recording info
symbol_tablet symtab;
const namespacet empty_ns(symtab);
string_constraint_generatort::infot info;
string_constraint_generatort generator(info, ns);
string_constraint_generatort generator(ns);
exprt res=generator.add_axioms_for_function_application(func);
std::string axioms;
std::vector<string_not_contains_constraintt> nc_axioms;
Expand Down Expand Up @@ -297,8 +296,7 @@ SCENARIO("instantiate_not_contains",
// Create witness for axiom
symbol_tablet symtab;
const namespacet empty_ns(symtab);
string_constraint_generatort::infot info;
string_constraint_generatort generator(info, ns);
string_constraint_generatort generator(ns);
generator.witness[vacuous]=
generator.fresh_symbol("w", t.witness_type());

Expand Down Expand Up @@ -353,8 +351,7 @@ SCENARIO("instantiate_not_contains",
// Create witness for axiom
symbol_tablet symtab;
const namespacet ns(symtab);
string_constraint_generatort::infot info;
string_constraint_generatort generator(info, ns);
string_constraint_generatort generator(ns);
generator.witness[trivial]=
generator.fresh_symbol("w", t.witness_type());

Expand Down Expand Up @@ -410,8 +407,7 @@ SCENARIO("instantiate_not_contains",
// Create witness for axiom
symbol_tablet symtab;
const namespacet empty_ns(symtab);
string_constraint_generatort::infot info;
string_constraint_generatort generator(info, ns);
string_constraint_generatort generator(ns);
generator.witness[trivial]=
generator.fresh_symbol("w", t.witness_type());

Expand Down Expand Up @@ -470,8 +466,7 @@ SCENARIO("instantiate_not_contains",
symbol_tablet symtab;
const namespacet empty_ns(symtab);

string_constraint_generatort::infot info;
string_constraint_generatort generator(info, ns);
string_constraint_generatort generator(ns);
generator.witness[trivial]=
generator.fresh_symbol("w", t.witness_type());

Expand Down Expand Up @@ -527,8 +522,7 @@ SCENARIO("instantiate_not_contains",
// Create witness for axiom
symbol_tablet symtab;
const namespacet empty_ns(symtab);
string_constraint_generatort::infot info;
string_constraint_generatort generator(info, ns);
string_constraint_generatort generator(ns);
generator.witness[trivial]=
generator.fresh_symbol("w", t.witness_type());

Expand Down

0 comments on commit b83182f

Please sign in to comment.