Skip to content

String solver max-length option #652

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
d43529e
Preprocessing of goto programs for string refinement
romainbrenguier Dec 31, 2016
4fd8694
Moving is_java_string_type functions to string_preprocess
romainbrenguier Feb 17, 2017
f28ffe2
Moving refined_string_type to util
romainbrenguier Feb 24, 2017
fff364c
Removed distinction between c string type and refined string type
romainbrenguier Feb 27, 2017
c64c512
Removed mention of c string type
romainbrenguier Feb 27, 2017
2f69606
Linting corrections on /util/
Feb 28, 2017
41f1f40
Using unordered_map and merging private sections
romainbrenguier Mar 4, 2017
e800b58
Using std::size_t and Better line breaking
romainbrenguier Mar 4, 2017
ea3872c
Breaking long line
romainbrenguier Mar 4, 2017
53b398d
Making sure `copy` has an argument, checking if assignments list empty
romainbrenguier Mar 10, 2017
7a91dac
Remove useless assertion
romainbrenguier Mar 13, 2017
b4bd1d6
Const reference in ranged for
romainbrenguier Mar 13, 2017
976b920
Replaced by
romainbrenguier Mar 13, 2017
1604f5f
Adding function and location to inserted assignments
romainbrenguier Mar 13, 2017
c745df5
Using unordered maps instead of maps
romainbrenguier Mar 13, 2017
a382498
Assertion on non nil object size
romainbrenguier Mar 13, 2017
58e3ada
Make a copy of the function call with side effect
romainbrenguier Mar 13, 2017
038c574
New copies of location and function for inserting assignments
romainbrenguier Mar 13, 2017
719ca84
Splitting long lines
romainbrenguier Mar 13, 2017
53b6a54
In ranged for, use auto& to modify elements
romainbrenguier Mar 14, 2017
6a0bcfd
Making add_string_type more generic
romainbrenguier Feb 7, 2017
a6f9cb6
new identifier for converting char pointer to array
romainbrenguier Mar 9, 2017
00e99e1
Many correction in preprocessing of strings
romainbrenguier Feb 17, 2017
4044236
Many corrections in string refinement
romainbrenguier Feb 28, 2017
61340a7
Adding refined_string_type to util Makefile
romainbrenguier Feb 27, 2017
0eeec2e
Adding string preprocessing of goto-programs to Makefile
romainbrenguier Jan 10, 2017
ee27f27
Adding string solver cpp files to Makefile
romainbrenguier Jan 10, 2017
8100175
Adding the string refinement option to the CBMC solvers
romainbrenguier Jan 10, 2017
195bef2
Update on string regression tests
Feb 24, 2017
b8d036b
Correction in the hacks to use refined strings in C programs
romainbrenguier Mar 6, 2017
17c3f1f
Add smoke tests for java string support
Mar 7, 2017
0633454
Update smoke tests
Mar 14, 2017
f1debba
Move java_easychair to performance tests
Mar 14, 2017
7f2aec3
Add performance tests with negated asserts
Mar 14, 2017
2d18c02
Update java_char_array_init/test_init.class
Mar 15, 2017
c24978f
Add first fixed_bugs test
Mar 15, 2017
c14eec7
[string-refine] Case of array-of in substitute array access
romainbrenguier Mar 16, 2017
fd2276a
[string-refine] Setting ui for temporary solver
romainbrenguier Mar 17, 2017
b43057c
[string-refine] Added option to the string solver for string length and
romainbrenguier Mar 17, 2017
2a866f6
[cbmc] Adding options to cbmc for parameters of the string solver
romainbrenguier Mar 17, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 7 additions & 8 deletions regression/strings/cprover-string-hack.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
typedef struct __CPROVER_string { char *s; } __CPROVER_string;
//typedef struct __CPROVER_char { char c; } __CPROVER_char;
typedef unsigned char __CPROVER_char;
typedef struct __attribute__((__packed__)) __CPROVER_refined_string_type { int length; char content[]; } __CPROVER_refined_string_type;
typedef __CPROVER_refined_string_type __CPROVER_string;

/******************************************************************************
* CPROVER string functions
Expand Down Expand Up @@ -54,19 +53,19 @@ typedef unsigned char __CPROVER_char;
/******************************************************************************
* don't use these directly
******************************************************************************/
extern __CPROVER_char __CPROVER_uninterpreted_string_char_at_func(__CPROVER_string str, int pos);
extern char __CPROVER_uninterpreted_string_char_at_func(__CPROVER_string str, int pos);
extern __CPROVER_bool __CPROVER_uninterpreted_string_equal_func(__CPROVER_string str1, __CPROVER_string str2);
extern __CPROVER_string __CPROVER_uninterpreted_string_literal_func(char * str);
extern __CPROVER_char __CPROVER_uninterpreted_char_literal_func();
extern char __CPROVER_uninterpreted_char_literal_func();
extern __CPROVER_string __CPROVER_uninterpreted_string_concat_func(__CPROVER_string str1, __CPROVER_string str2);
extern int __CPROVER_uninterpreted_string_length_func(__CPROVER_string str);
extern __CPROVER_string __CPROVER_uninterpreted_string_substring_func(__CPROVER_string str, int i, int j);
extern __CPROVER_bool __CPROVER_uninterpreted_string_is_prefix_func(__CPROVER_string pref, __CPROVER_string str);
extern __CPROVER_bool __CPROVER_uninterpreted_string_is_suffix_func(__CPROVER_string suff, __CPROVER_string str);
extern __CPROVER_bool __CPROVER_uninterpreted_string_contains_func(__CPROVER_string str1, __CPROVER_string str2);
extern int __CPROVER_uninterpreted_string_index_of_func(__CPROVER_string str, __CPROVER_char c);
extern int __CPROVER_uninterpreted_string_last_index_of_func(__CPROVER_string str, __CPROVER_char c);
extern __CPROVER_string __CPROVER_uninterpreted_string_char_set_func(__CPROVER_string str, int pos, __CPROVER_char c);
extern int __CPROVER_uninterpreted_string_index_of_func(__CPROVER_string str, char c);
extern int __CPROVER_uninterpreted_string_last_index_of_func(__CPROVER_string str, char c);
extern __CPROVER_string __CPROVER_uninterpreted_string_char_set_func(__CPROVER_string str, int pos, char c);
extern __CPROVER_string __CPROVER_uninterpreted_string_copy_func(__CPROVER_string str);
extern int __CPROVER_uninterpreted_string_parse_int_func(__CPROVER_string str);
extern __CPROVER_string __CPROVER_uninterpreted_string_of_int_func(int i);
9 changes: 9 additions & 0 deletions regression/strings/fixed_bugs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

test:
@../../test.pl -c ../../../../src/cbmc/cbmc

testfuture:
@../../test.pl -c ../../../../src/cbmc/cbmc -CF

testall:
@../../test.pl -c ../../../../src/cbmc/cbmc -CFTK
Binary file not shown.
7 changes: 7 additions & 0 deletions regression/strings/fixed_bugs/test-gen-095/test.desc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
KNOWNBUG
test.class
--string-refine
^EXIT=0$
^SIGNAL=0$
^VERIFICATION SUCCESSFUL$
--
10 changes: 10 additions & 0 deletions regression/strings/fixed_bugs/test-gen-095/test.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
public class test
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder(args[0]);
sb.append("Z");
String s = sb.toString();
assert(s.equals("fg"));
}
}
10 changes: 0 additions & 10 deletions regression/strings/java_case/test.desc

This file was deleted.

Binary file removed regression/strings/java_case/test_case.class
Binary file not shown.
16 changes: 0 additions & 16 deletions regression/strings/java_case/test_case.java

This file was deleted.

9 changes: 0 additions & 9 deletions regression/strings/java_char_array/test.desc

This file was deleted.

Binary file not shown.
15 changes: 0 additions & 15 deletions regression/strings/java_char_array/test_char_array.java

This file was deleted.

11 changes: 0 additions & 11 deletions regression/strings/java_char_array_init/test.desc

This file was deleted.

Binary file not shown.
23 changes: 0 additions & 23 deletions regression/strings/java_char_array_init/test_init.java

This file was deleted.

9 changes: 0 additions & 9 deletions regression/strings/java_char_at/test.desc

This file was deleted.

Binary file removed regression/strings/java_char_at/test_char_at.class
Binary file not shown.
17 changes: 0 additions & 17 deletions regression/strings/java_char_at/test_char_at.java

This file was deleted.

11 changes: 0 additions & 11 deletions regression/strings/java_code_point/test.desc

This file was deleted.

Binary file not shown.
13 changes: 0 additions & 13 deletions regression/strings/java_code_point/test_code_point.java

This file was deleted.

10 changes: 0 additions & 10 deletions regression/strings/java_compare/test.desc

This file was deleted.

Binary file removed regression/strings/java_compare/test_compare.class
Binary file not shown.
18 changes: 0 additions & 18 deletions regression/strings/java_compare/test_compare.java

This file was deleted.

8 changes: 0 additions & 8 deletions regression/strings/java_concat/test.desc

This file was deleted.

Binary file removed regression/strings/java_concat/test_concat.class
Binary file not shown.
12 changes: 0 additions & 12 deletions regression/strings/java_concat/test_concat.java

This file was deleted.

8 changes: 0 additions & 8 deletions regression/strings/java_contains/test.desc

This file was deleted.

Binary file removed regression/strings/java_contains/test_contains.class
Binary file not shown.
10 changes: 0 additions & 10 deletions regression/strings/java_contains/test_contains.java

This file was deleted.

8 changes: 0 additions & 8 deletions regression/strings/java_delete/test.desc

This file was deleted.

Binary file removed regression/strings/java_delete/test_delete.class
Binary file not shown.
15 changes: 0 additions & 15 deletions regression/strings/java_delete/test_delete.java

This file was deleted.

34 changes: 0 additions & 34 deletions regression/strings/java_easychair/easychair.java

This file was deleted.

7 changes: 0 additions & 7 deletions regression/strings/java_easychair/test.desc

This file was deleted.

8 changes: 0 additions & 8 deletions regression/strings/java_empty/test.desc

This file was deleted.

Binary file removed regression/strings/java_empty/test_empty.class
Binary file not shown.
7 changes: 0 additions & 7 deletions regression/strings/java_empty/test_empty.java

This file was deleted.

8 changes: 0 additions & 8 deletions regression/strings/java_equal/test.desc

This file was deleted.

10 changes: 0 additions & 10 deletions regression/strings/java_equal/test_equal.java

This file was deleted.

10 changes: 0 additions & 10 deletions regression/strings/java_float/test.desc

This file was deleted.

Loading