Skip to content

Commit bc3eedc

Browse files
Replacing str and substring by haystack and needle
For clarity about the role of the arguments.
1 parent 9b11653 commit bc3eedc

File tree

2 files changed

+23
-23
lines changed

2 files changed

+23
-23
lines changed

src/solvers/refinement/string_constraint_generator.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,8 @@ class string_constraint_generatort
198198
// we add axioms stating that the returned value is either -1 or greater than
199199
// from_index and the string beggining there has prefix substring
200200
exprt add_axioms_for_index_of_string(
201-
const string_exprt &str,
202-
const string_exprt &substring,
201+
const string_exprt &haystack,
202+
const string_exprt &needle,
203203
const exprt &from_index);
204204

205205
// Add axioms corresponding to the String.indexOf java functions

src/solvers/refinement/string_constraint_generator_indexof.cpp

+21-21
Original file line numberDiff line numberDiff line change
@@ -79,25 +79,25 @@ exprt string_constraint_generatort::add_axioms_for_index_of(
7979
Function: string_constraint_generatort::add_axioms_for_index_of_string
8080
8181
Inputs:
82-
str - a string expression
82+
haystack - a string expression
8383
substring - a string expression
8484
from_index - an expression representing an index in strings
8585
8686
Outputs: a integer expression
8787
8888
Purpose: add axioms stating that the returned value is an index greater than
89-
from_index such that str at that index starts with substring and is
90-
the first occurence of substring in str after from_index,
91-
or returned value is -1 if str does not contain substring.
89+
from_index such that haystack at that index starts with needle and
90+
is the first occurence of needle in haystack after from_index,
91+
or returned value is -1 if haystack does not contain needle.
9292
9393
\*******************************************************************/
9494

9595
exprt string_constraint_generatort::add_axioms_for_index_of_string(
96-
const string_exprt &str,
97-
const string_exprt &substring,
96+
const string_exprt &haystack,
97+
const string_exprt &needle,
9898
const exprt &from_index)
9999
{
100-
const typet &index_type=str.length().type();
100+
const typet &index_type=haystack.length().type();
101101
symbol_exprt offset=fresh_exist_index("index_of", index_type);
102102
symbol_exprt contains=fresh_boolean("contains_substring");
103103

@@ -116,7 +116,7 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
116116
and_exprt(
117117
binary_relation_exprt(from_index, ID_le, offset),
118118
binary_relation_exprt(
119-
offset, ID_le, minus_exprt(str.length(), substring.length()))));
119+
offset, ID_le, minus_exprt(haystack.length(), needle.length()))));
120120
axioms.push_back(a1);
121121

122122
equal_exprt a2(
@@ -127,12 +127,12 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
127127
symbol_exprt qvar=fresh_univ_index("QA_index_of_string", index_type);
128128
string_constraintt a3(
129129
qvar,
130-
substring.length(),
130+
needle.length(),
131131
contains,
132-
equal_exprt(str[plus_exprt(qvar, offset)], substring[qvar]));
132+
equal_exprt(haystack[plus_exprt(qvar, offset)], needle[qvar]));
133133
axioms.push_back(a3);
134134

135-
if(!is_constant_string(substring))
135+
if(!is_constant_string(needle))
136136
{
137137
// string_not contains_constraintt are formula of the form:
138138
// forall x in [lb,ub[. p(x) => exists y in [lb,ub[. s1[x+y] != s2[y]
@@ -141,19 +141,19 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
141141
offset,
142142
contains,
143143
from_integer(0, index_type),
144-
substring.length(),
145-
str,
146-
substring);
144+
needle.length(),
145+
haystack,
146+
needle);
147147
axioms.push_back(a4);
148148

149149
string_not_contains_constraintt a5(
150150
from_index,
151-
minus_exprt(str.length(), substring.length()),
151+
minus_exprt(haystack.length(), needle.length()),
152152
not_exprt(contains),
153153
from_integer(0, index_type),
154-
substring.length(),
155-
str,
156-
substring);
154+
needle.length(),
155+
haystack,
156+
needle);
157157
axioms.push_back(a5);
158158
}
159159
else
@@ -166,19 +166,19 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
166166
// str[n+|substring|-1]!=substring[|substring|-1]
167167
symbol_exprt qvar2=fresh_univ_index("QA_index_of_string_2", index_type);
168168
mp_integer sub_length;
169-
assert(!to_integer(substring.length(), sub_length));
169+
assert(!to_integer(needle.length(), sub_length));
170170
exprt::operandst disjuncts;
171171
for(mp_integer offset=0; offset<sub_length; ++offset)
172172
{
173173
exprt expr_offset=from_integer(offset, index_type);
174174
plus_exprt shifted(expr_offset, qvar2);
175175
disjuncts.push_back(
176-
not_exprt(equal_exprt(str[shifted], substring[expr_offset])));
176+
not_exprt(equal_exprt(haystack[shifted], needle[expr_offset])));
177177
}
178178

179179
or_exprt premise(
180180
not_exprt(contains), binary_relation_exprt(qvar, ID_lt, offset));
181-
minus_exprt length_diff(str.length(), substring.length());
181+
minus_exprt length_diff(haystack.length(), needle.length());
182182
string_constraintt a6(
183183
qvar2,
184184
from_index,

0 commit comments

Comments
 (0)