@@ -79,25 +79,25 @@ exprt string_constraint_generatort::add_axioms_for_index_of(
79
79
Function: string_constraint_generatort::add_axioms_for_index_of_string
80
80
81
81
Inputs:
82
- str - a string expression
82
+ haystack - a string expression
83
83
substring - a string expression
84
84
from_index - an expression representing an index in strings
85
85
86
86
Outputs: a integer expression
87
87
88
88
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 .
92
92
93
93
\*******************************************************************/
94
94
95
95
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 ,
98
98
const exprt &from_index)
99
99
{
100
- const typet &index_type=str .length ().type ();
100
+ const typet &index_type=haystack .length ().type ();
101
101
symbol_exprt offset=fresh_exist_index (" index_of" , index_type);
102
102
symbol_exprt contains=fresh_boolean (" contains_substring" );
103
103
@@ -116,7 +116,7 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
116
116
and_exprt (
117
117
binary_relation_exprt (from_index, ID_le, offset),
118
118
binary_relation_exprt (
119
- offset, ID_le, minus_exprt (str .length (), substring .length ()))));
119
+ offset, ID_le, minus_exprt (haystack .length (), needle .length ()))));
120
120
axioms.push_back (a1);
121
121
122
122
equal_exprt a2 (
@@ -127,12 +127,12 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
127
127
symbol_exprt qvar=fresh_univ_index (" QA_index_of_string" , index_type);
128
128
string_constraintt a3 (
129
129
qvar,
130
- substring .length (),
130
+ needle .length (),
131
131
contains,
132
- equal_exprt (str [plus_exprt (qvar, offset)], substring [qvar]));
132
+ equal_exprt (haystack [plus_exprt (qvar, offset)], needle [qvar]));
133
133
axioms.push_back (a3);
134
134
135
- if (!is_constant_string (substring ))
135
+ if (!is_constant_string (needle ))
136
136
{
137
137
// string_not contains_constraintt are formula of the form:
138
138
// 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(
141
141
offset,
142
142
contains,
143
143
from_integer (0 , index_type),
144
- substring .length (),
145
- str ,
146
- substring );
144
+ needle .length (),
145
+ haystack ,
146
+ needle );
147
147
axioms.push_back (a4);
148
148
149
149
string_not_contains_constraintt a5 (
150
150
from_index,
151
- minus_exprt (str .length (), substring .length ()),
151
+ minus_exprt (haystack .length (), needle .length ()),
152
152
not_exprt (contains),
153
153
from_integer (0 , index_type),
154
- substring .length (),
155
- str ,
156
- substring );
154
+ needle .length (),
155
+ haystack ,
156
+ needle );
157
157
axioms.push_back (a5);
158
158
}
159
159
else
@@ -166,19 +166,19 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
166
166
// str[n+|substring|-1]!=substring[|substring|-1]
167
167
symbol_exprt qvar2=fresh_univ_index (" QA_index_of_string_2" , index_type);
168
168
mp_integer sub_length;
169
- assert (!to_integer (substring .length (), sub_length));
169
+ assert (!to_integer (needle .length (), sub_length));
170
170
exprt::operandst disjuncts;
171
171
for (mp_integer offset=0 ; offset<sub_length; ++offset)
172
172
{
173
173
exprt expr_offset=from_integer (offset, index_type);
174
174
plus_exprt shifted (expr_offset, qvar2);
175
175
disjuncts.push_back (
176
- not_exprt (equal_exprt (str [shifted], substring [expr_offset])));
176
+ not_exprt (equal_exprt (haystack [shifted], needle [expr_offset])));
177
177
}
178
178
179
179
or_exprt premise (
180
180
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 ());
182
182
string_constraintt a6 (
183
183
qvar2,
184
184
from_index,
0 commit comments