Skip to content

Commit 39a03aa

Browse files
Daniel Kroeningsvorenova
Daniel Kroening
authored and
svorenova
committed
move string solver into directory of its own
The string solver is now large enough to justify a separate directory.
1 parent f281bc3 commit 39a03aa

File tree

48 files changed

+105
-77
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+105
-77
lines changed

jbmc/src/jbmc/jbmc_parse_options.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ Author: Daniel Kroening, [email protected]
2828
#include <goto-programs/lazy_goto_model.h>
2929
#include <goto-programs/show_properties.h>
3030

31-
#include <solvers/refinement/string_refinement.h>
31+
#include <goto-symex/path_storage.h>
32+
33+
#include <solvers/strings/string_refinement.h>
3234

3335
#include <java_bytecode/java_bytecode_language.h>
3436

jbmc/src/jbmc/module_dependencies.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ langapi # should go away
1111
linking
1212
pointer-analysis
1313
solvers/refinement
14+
solvers/strings
1415
util

jbmc/unit/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ SRC += java_bytecode/ci_lazy_methods/lazy_load_lambdas.cpp \
5454
java_bytecode/java_virtual_functions/virtual_functions.cpp \
5555
java_bytecode/load_method_by_regex.cpp \
5656
pointer-analysis/custom_value_set_analysis.cpp \
57-
solvers/refinement/string_constraint_instantiation/instantiate_not_contains.cpp \
58-
solvers/refinement/string_refinement/dependency_graph.cpp \
59-
solvers/refinement/string_refinement/string_symbol_resolution.cpp \
57+
solvers/strings/string_constraint_instantiation/instantiate_not_contains.cpp \
58+
solvers/strings/string_refinement/dependency_graph.cpp \
59+
solvers/strings/string_refinement/string_symbol_resolution.cpp \
6060
util/expr_iterator.cpp \
6161
util/has_subtype.cpp \
6262
util/parameter_indices.cpp \

jbmc/unit/solvers/refinement/string_constraint_instantiation/instantiate_not_contains.cpp renamed to jbmc/unit/solvers/strings/string_constraint_instantiation/instantiate_not_contains.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Author: Jesse Sigal, [email protected]
1515
#include <langapi/mode.h>
1616
#include <langapi/language_util.h>
1717

18-
#include <solvers/refinement/string_constraint_instantiation.h>
18+
#include <solvers/strings/string_constraint_instantiation.h>
1919
#include <solvers/sat/satcheck.h>
2020

2121
#include <util/simplify_expr.h>

jbmc/unit/solvers/refinement/string_constraint_instantiation/module_dependencies.txt renamed to jbmc/unit/solvers/strings/string_constraint_instantiation/module_dependencies.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ java_bytecode
22
langapi # should go away
33
solvers/refinement
44
solvers/sat
5+
solvers/strings
56
string_constraint_instantiation
67
testing-utils
78
util

jbmc/unit/solvers/refinement/string_refinement/dependency_graph.cpp renamed to jbmc/unit/solvers/strings/string_refinement/dependency_graph.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Author: Diffblue Ltd.
1313
#include <util/std_types.h>
1414
#include <util/std_expr.h>
1515
#include <java_bytecode/java_types.h>
16-
#include <solvers/refinement/string_refinement_util.h>
16+
#include <solvers/strings/string_refinement_util.h>
1717

1818
#ifdef DEBUG
1919
#include <iostream>

jbmc/unit/solvers/refinement/string_refinement/module_dependencies.txt renamed to jbmc/unit/solvers/strings/string_refinement/module_dependencies.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ java_bytecode
22
langapi # should go away
33
string_refinement
44
solvers/refinement
5+
solvers/strings
56
testing-utils
67
util

jbmc/unit/solvers/refinement/string_refinement/string_symbol_resolution.cpp renamed to jbmc/unit/solvers/strings/string_refinement/string_symbol_resolution.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ Author: Diffblue Ltd.
99

1010
#include <testing-utils/catch.hpp>
1111

12+
#include <solvers/strings/string_refinement.h>
13+
1214
#include <util/arith_tools.h>
1315
#include <util/c_types.h>
1416
#include <util/std_expr.h>
15-
#include <solvers/refinement/string_refinement.h>
1617
#include <util/symbol_table.h>
1718
#include <langapi/mode.h>
1819
#include <java_bytecode/java_bytecode_language.h>

src/cbmc/cbmc_parse_options.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Author: Daniel Kroening, [email protected]
2929

3030
#include <goto-programs/goto_trace.h>
3131

32-
#include <solvers/refinement/string_refinement.h>
32+
#include <solvers/strings/string_refinement.h>
3333

3434
#include "bmc.h"
3535
#include "xml_interface.h"

src/goto-checker/solver_factory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Author: Daniel Kroening, Peter Schrammel
2828
#include <solvers/prop/prop.h>
2929
#include <solvers/prop/prop_conv.h>
3030
#include <solvers/refinement/bv_refinement.h>
31-
#include <solvers/refinement/string_refinement.h>
31+
#include <solvers/strings/string_refinement.h>
3232
#include <solvers/sat/dimacs_cnf.h>
3333
#include <solvers/sat/satcheck.h>
3434

src/solvers/Makefile

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -161,23 +161,23 @@ SRC = $(BOOLEFORCE_SRC) \
161161
refinement/bv_refinement_loop.cpp \
162162
refinement/refine_arithmetic.cpp \
163163
refinement/refine_arrays.cpp \
164-
refinement/string_builtin_function.cpp \
165-
refinement/string_refinement.cpp \
166-
refinement/string_refinement_util.cpp \
167-
refinement/string_constraint.cpp \
168-
refinement/string_constraint_generator_code_points.cpp \
169-
refinement/string_constraint_generator_comparison.cpp \
170-
refinement/string_constraint_generator_concat.cpp \
171-
refinement/string_constraint_generator_constants.cpp \
172-
refinement/string_constraint_generator_indexof.cpp \
173-
refinement/string_constraint_generator_insert.cpp \
174-
refinement/string_constraint_generator_float.cpp \
175-
refinement/string_constraint_generator_format.cpp \
176-
refinement/string_constraint_generator_main.cpp \
177-
refinement/string_constraint_generator_testing.cpp \
178-
refinement/string_constraint_generator_transformation.cpp \
179-
refinement/string_constraint_generator_valueof.cpp \
180-
refinement/string_constraint_instantiation.cpp \
164+
strings/string_builtin_function.cpp \
165+
strings/string_refinement.cpp \
166+
strings/string_refinement_util.cpp \
167+
strings/string_constraint.cpp \
168+
strings/string_constraint_generator_code_points.cpp \
169+
strings/string_constraint_generator_comparison.cpp \
170+
strings/string_constraint_generator_concat.cpp \
171+
strings/string_constraint_generator_constants.cpp \
172+
strings/string_constraint_generator_indexof.cpp \
173+
strings/string_constraint_generator_insert.cpp \
174+
strings/string_constraint_generator_float.cpp \
175+
strings/string_constraint_generator_format.cpp \
176+
strings/string_constraint_generator_main.cpp \
177+
strings/string_constraint_generator_testing.cpp \
178+
strings/string_constraint_generator_transformation.cpp \
179+
strings/string_constraint_generator_valueof.cpp \
180+
strings/string_constraint_instantiation.cpp \
181181
sat/cnf.cpp \
182182
sat/cnf_clause_list.cpp \
183183
sat/dimacs_cnf.cpp \
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
solvers/flattening
2+
solvers/floatbv
3+
solvers/refinement
4+
solvers/sat
5+
solvers/strings
6+
util

src/solvers/refinement/string_constraint.h renamed to src/solvers/strings/string_constraint.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ Author: Romain Brenguier, [email protected]
2020
#ifndef CPROVER_SOLVERS_REFINEMENT_STRING_CONSTRAINT_H
2121
#define CPROVER_SOLVERS_REFINEMENT_STRING_CONSTRAINT_H
2222

23-
#include "bv_refinement.h"
2423
#include "string_refinement_invariant.h"
2524

25+
#include <solvers/refinement/bv_refinement.h>
26+
2627
#include <util/format_expr.h>
2728
#include <util/format_type.h>
2829
#include <util/refined_string_type.h>

src/solvers/refinement/string_constraint_generator.h renamed to src/solvers/strings/string_constraint_generator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Author: Romain Brenguier, [email protected]
2626
#include <util/refined_string_type.h>
2727
#include <util/constexpr.def>
2828
#include <util/deprecate.h>
29-
#include <solvers/refinement/string_constraint.h>
29+
#include <solvers/strings/string_constraint.h>
3030

3131
/// Generation of fresh symbols of a given type
3232
class symbol_generatort final

src/solvers/refinement/string_constraint_generator_code_points.cpp renamed to src/solvers/strings/string_constraint_generator_code_points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Author: Romain Brenguier, [email protected]
1010
/// \file
1111
/// Generates string constraints for Java functions dealing with code points
1212

13-
#include <solvers/refinement/string_constraint_generator.h>
13+
#include "string_constraint_generator.h"
1414

1515
/// add axioms for the conversion of an integer representing a java
1616
/// code point to a utf-16 string

src/solvers/refinement/string_constraint_generator_comparison.cpp renamed to src/solvers/strings/string_constraint_generator_comparison.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ Author: Romain Brenguier, [email protected]
1111
/// Generates string constraints for function comparing strings, such as:
1212
/// equals, equalsIgnoreCase, compareTo, hashCode, intern
1313

14-
#include <solvers/refinement/string_constraint_generator.h>
14+
#include "string_constraint_generator.h"
15+
1516
#include <util/deprecate.h>
1617

1718
/// Equality of the content of two strings

src/solvers/refinement/string_constraint_generator_concat.cpp renamed to src/solvers/strings/string_constraint_generator_concat.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Author: Romain Brenguier, [email protected]
1111
/// Generates string constraints for functions adding content add the end of
1212
/// strings
1313

14-
#include <solvers/refinement/string_constraint_generator.h>
14+
#include "string_constraint_generator.h"
1515

1616
/// Add axioms enforcing that `res` is the concatenation of `s1` with
1717
/// the substring of `s2` starting at index `start_index'` and ending

src/solvers/refinement/string_constraint_generator_constants.cpp renamed to src/solvers/strings/string_constraint_generator_constants.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Author: Romain Brenguier, [email protected]
99
/// \file
1010
/// Generates string constraints for constant strings
1111

12-
#include <solvers/refinement/string_constraint_generator.h>
12+
#include "string_constraint_generator.h"
1313

1414
#include <util/prefix.h>
1515
#include <util/unicode.h>

src/solvers/refinement/string_constraint_generator_indexof.cpp renamed to src/solvers/strings/string_constraint_generator_indexof.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ Author: Romain Brenguier, [email protected]
1111
/// Generates string constraints for the family of indexOf and lastIndexOf java
1212
/// functions
1313

14-
#include <solvers/refinement/string_refinement_invariant.h>
15-
#include <solvers/refinement/string_constraint_generator.h>
14+
#include "string_refinement_invariant.h"
15+
#include "string_constraint_generator.h"
1616

1717
/// Add axioms stating that the returned value is the index within `haystack`
1818
/// (`str`) of the first occurrence of `needle` (`c`) starting the search at

src/solvers/refinement/string_constraint_generator_insert.cpp renamed to src/solvers/strings/string_constraint_generator_insert.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ Author: Romain Brenguier, [email protected]
99
/// \file
1010
/// Generates string constraints for the family of insert Java functions
1111

12-
#include <solvers/refinement/string_refinement_invariant.h>
13-
#include <solvers/refinement/string_constraint_generator.h>
12+
#include "string_refinement_invariant.h"
13+
#include "string_constraint_generator.h"
14+
1415
#include <util/deprecate.h>
1516

1617
/// Add axioms ensuring the result `res` corresponds to `s1` where we

src/solvers/refinement/string_constraint_generator_main.cpp renamed to src/solvers/strings/string_constraint_generator_main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ Author: Romain Brenguier, [email protected]
1717
/// Li and Indradeep Ghosh, which gives examples of constraints for several
1818
/// functions.
1919

20-
#include <solvers/refinement/string_constraint_generator.h>
20+
#include "string_constraint_generator.h"
21+
#include "string_refinement_invariant.h"
2122

2223
#include <iterator>
2324
#include <limits>
24-
#include <solvers/refinement/string_refinement_invariant.h>
2525

2626
#include <util/arith_tools.h>
2727
#include <util/pointer_predicates.h>

src/solvers/refinement/string_constraint_generator_testing.cpp renamed to src/solvers/strings/string_constraint_generator_testing.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ Author: Romain Brenguier, [email protected]
1010
/// \file
1111
/// Generates string constraints for string functions that return Boolean values
1212

13-
#include <solvers/refinement/string_refinement_invariant.h>
14-
#include <solvers/refinement/string_constraint_generator.h>
13+
#include "string_refinement_invariant.h"
14+
#include "string_constraint_generator.h"
15+
1516
#include <util/deprecate.h>
1617

1718
/// Add axioms stating that the returned expression is true exactly when the

src/solvers/refinement/string_constraint_generator_transformation.cpp renamed to src/solvers/strings/string_constraint_generator_transformation.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ Author: Romain Brenguier, [email protected]
1111
/// Generates string constraints for string transformations, that is, functions
1212
/// taking one string and returning another
1313

14-
#include <solvers/refinement/string_refinement_invariant.h>
15-
#include <solvers/refinement/string_constraint_generator.h>
14+
#include "string_refinement_invariant.h"
15+
#include "string_constraint_generator.h"
16+
1617
#include <util/arith_tools.h>
1718

1819
/// Reduce or extend a string to have the given length

src/solvers/refinement/string_constraint_generator_valueof.cpp renamed to src/solvers/strings/string_constraint_generator_valueof.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ Author: Romain Brenguier, [email protected]
1111
/// Generates string constraints for functions generating strings from other
1212
/// types, in particular int, long, float, double, char, bool
1313

14-
#include <solvers/refinement/string_refinement_invariant.h>
15-
#include <solvers/refinement/string_constraint_generator.h>
14+
#include "string_refinement_invariant.h"
15+
#include "string_constraint_generator.h"
16+
1617
#include <util/simplify_expr.h>
1718
#include <util/deprecate.h>
1819

src/solvers/refinement/string_constraint_instantiation.cpp renamed to src/solvers/strings/string_constraint_instantiation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Author: Jesse Sigal, [email protected]
99
/// \file
1010
/// Defines related function for string constraints.
1111

12-
#include <solvers/refinement/string_constraint_instantiation.h>
12+
#include "string_constraint_instantiation.h"
1313

1414
/// Instantiates a quantified formula representing `not_contains` by
1515
/// substituting the quantifiers and generating axioms.

src/solvers/refinement/string_constraint_instantiation.h renamed to src/solvers/strings/string_constraint_instantiation.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ Author: Jesse Sigal, [email protected]
1212
#ifndef CPROVER_SOLVERS_REFINEMENT_STRING_CONSTRAINT_INSTANTIATION_H
1313
#define CPROVER_SOLVERS_REFINEMENT_STRING_CONSTRAINT_INSTANTIATION_H
1414

15-
#include <solvers/refinement/string_constraint.h>
16-
#include <solvers/refinement/string_constraint_generator.h>
15+
#include "string_constraint.h"
16+
#include "string_constraint_generator.h"
1717

1818
std::vector<exprt> instantiate_not_contains(
1919
const string_not_contains_constraintt &axiom,

src/solvers/refinement/string_refinement.cpp renamed to src/solvers/strings/string_refinement.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ Author: Alberto Griggio, [email protected]
1717
/// Parameterized Array and Interval Automaton" by Guodong Li and Indradeep
1818
/// Ghosh.
1919

20-
#include <solvers/refinement/string_refinement.h>
20+
#include "string_refinement.h"
21+
#include "string_constraint_instantiation.h"
2122

2223
#include <iomanip>
2324
#include <numeric>
@@ -26,7 +27,6 @@ Author: Alberto Griggio, [email protected]
2627
#include <util/expr_util.h>
2728
#include <util/simplify_expr.h>
2829
#include <solvers/sat/satcheck.h>
29-
#include <solvers/refinement/string_constraint_instantiation.h>
3030
#include <unordered_set>
3131
#include <util/magic.h>
3232

src/solvers/refinement/string_refinement.h renamed to src/solvers/strings/string_refinement.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ Author: Alberto Griggio, [email protected]
2424
#include <util/string_expr.h>
2525
#include <util/replace_expr.h>
2626
#include <util/union_find_replace.h>
27-
#include <solvers/refinement/string_constraint.h>
28-
#include <solvers/refinement/string_constraint_generator.h>
29-
#include <solvers/refinement/string_refinement_invariant.h>
30-
#include <solvers/refinement/string_refinement_util.h>
27+
28+
#include "string_constraint.h"
29+
#include "string_constraint_generator.h"
30+
#include "string_refinement_invariant.h"
31+
#include "string_refinement_util.h"
3132

3233
// clang-format off
3334
#define OPT_STRING_REFINEMENT \

unit/Makefile

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ SRC += analyses/ai/ai.cpp \
3434
pointer-analysis/value_set.cpp \
3535
solvers/floatbv/float_utils.cpp \
3636
solvers/miniBDD/miniBDD.cpp \
37-
solvers/refinement/array_pool/array_pool.cpp \
38-
solvers/refinement/string_constraint_generator_valueof/calculate_max_string_length.cpp \
39-
solvers/refinement/string_constraint_generator_valueof/get_numeric_value_from_character.cpp \
40-
solvers/refinement/string_constraint_generator_valueof/is_digit_with_radix.cpp \
41-
solvers/refinement/string_refinement/concretize_array.cpp \
42-
solvers/refinement/string_refinement/sparse_array.cpp \
43-
solvers/refinement/string_refinement/substitute_array_list.cpp \
44-
solvers/refinement/string_refinement/union_find_replace.cpp \
37+
solvers/strings/array_pool/array_pool.cpp \
38+
solvers/strings/string_constraint_generator_valueof/calculate_max_string_length.cpp \
39+
solvers/strings/string_constraint_generator_valueof/get_numeric_value_from_character.cpp \
40+
solvers/strings/string_constraint_generator_valueof/is_digit_with_radix.cpp \
41+
solvers/strings/string_refinement/concretize_array.cpp \
42+
solvers/strings/string_refinement/sparse_array.cpp \
43+
solvers/strings/string_refinement/substitute_array_list.cpp \
44+
solvers/strings/string_refinement/union_find_replace.cpp \
4545
util/cmdline.cpp \
4646
util/expr_cast/expr_cast.cpp \
4747
util/expr.cpp \

unit/solvers/refinement/array_pool/array_pool.cpp renamed to unit/solvers/strings/array_pool/array_pool.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ Author: Diffblue Ltd.
99

1010
#include <testing-utils/catch.hpp>
1111

12-
#include <solvers/refinement/string_constraint_generator.h>
12+
#include <solvers/strings/string_constraint_generator.h>
1313

1414
SCENARIO(
15-
"array_pool", "[core][solvers][refinement][string_constraint_generator]")
15+
"array_pool", "[core][solvers][strings][string_constraint_generator]")
1616
{
1717
const std::size_t pointer_width = 16;
1818
const auto char_type = unsignedbv_typet(8);
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
solvers/refinement
2+
solvers/strings
23
testing-utils
34
util

unit/solvers/refinement/string_constraint_generator_valueof/calculate_max_string_length.cpp renamed to unit/solvers/strings/string_constraint_generator_valueof/calculate_max_string_length.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Author: Diffblue Ltd.
99

1010
#include <testing-utils/catch.hpp>
1111

12-
#include <solvers/refinement/string_constraint_generator.h>
12+
#include <solvers/strings/string_constraint_generator.h>
1313
#include <util/std_types.h>
1414

1515
/// Get the string length needed to print any value of the given type with the
@@ -106,7 +106,7 @@ static size_t expected_length(unsigned long radix, const typet &type)
106106
}
107107

108108
SCENARIO("calculate_max_string_length",
109-
"[core][solvers][refinement][string_constraint_generator_valueof]")
109+
"[core][solvers][strings][string_constraint_generator_valueof]")
110110
{
111111
const unsigned long radixes[]={2, 8, 10, 16};
112112
const typet int_types[]=

0 commit comments

Comments
 (0)