Skip to content

Commit 59994bf

Browse files
Rename premise in index_guard in string constraint
1 parent 68c1160 commit 59994bf

7 files changed

+31
-30
lines changed

src/solvers/refinement/string_constraint.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
void replace(string_constraintt &axiom, const replace_mapt &symbol_resolve)
99
{
10-
replace_expr(symbol_resolve, axiom.premise);
10+
replace_expr(symbol_resolve, axiom.index_guard);
1111
replace_expr(symbol_resolve, axiom.body);
1212
replace_expr(symbol_resolve, axiom.univ_var);
1313
replace_expr(symbol_resolve, axiom.upper_bound);
@@ -29,7 +29,7 @@ std::string from_expr(
2929
return "forall " + from_expr(ns, identifier, expr.univ_var) + " in [" +
3030
from_expr(ns, identifier, expr.lower_bound) + ", " +
3131
from_expr(ns, identifier, expr.upper_bound) + "). " +
32-
from_expr(ns, identifier, expr.premise) + " => " +
32+
from_expr(ns, identifier, expr.index_guard) + " => " +
3333
from_expr(ns, identifier, expr.body);
3434
}
3535

@@ -143,11 +143,12 @@ bool is_valid_string_constraint(
143143
const string_constraintt &expr)
144144
{
145145
const auto eom = messaget::eom;
146-
// Condition 1: The premise cannot contain any string indices
147-
const array_index_mapt premise_indices = gather_indices(expr.premise);
146+
// Condition 1: The index guard cannot contain any string indices
147+
const array_index_mapt premise_indices = gather_indices(expr.index_guard);
148148
if(!premise_indices.empty())
149149
{
150-
stream << "Premise has indices: " << from_expr(ns, "", expr) << ", map: {";
150+
stream << "Index guard has indices: " << from_expr(ns, "", expr)
151+
<< ", map: {";
151152
for(const auto &pair : premise_indices)
152153
{
153154
stream << from_expr(ns, "", pair.first) << ": {";

src/solvers/refinement/string_constraint.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ class string_constraintt final
5858
public:
5959
// String constraints are of the form
6060
// forall univ_var in [lower_bound,upper_bound[. premise => body
61-
exprt premise = true_exprt(); // Index guard
62-
exprt body; // value constraint
61+
exprt index_guard = true_exprt(); // Index guard
62+
exprt body; // value constraint
6363
symbol_exprt univ_var;
6464
// \todo avoid depending on java type
6565
exprt lower_bound = from_integer(0, java_int_type());
@@ -69,7 +69,7 @@ class string_constraintt final
6969
inline void
7070
replace(string_constraintt &axiom, const union_find_replacet &symbol_resolve)
7171
{
72-
symbol_resolve.replace_expr(axiom.premise);
72+
symbol_resolve.replace_expr(axiom.index_guard);
7373
symbol_resolve.replace_expr(axiom.body);
7474
symbol_resolve.replace_expr(axiom.univ_var);
7575
symbol_resolve.replace_expr(axiom.upper_bound);

src/solvers/refinement/string_constraint_generator_comparison.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ exprt string_constraint_generatort::add_axioms_for_equals(
4646
string_constraintt a2;
4747
a2.univ_var = qvar;
4848
a2.upper_bound = s1.length();
49-
a2.premise = eq;
49+
a2.index_guard = eq;
5050
a2.body = equal_exprt(s1[qvar], s2[qvar]);
5151
constraints.push_back(a2);
5252

@@ -137,7 +137,7 @@ exprt string_constraint_generatort::add_axioms_for_equals_ignore_case(
137137
string_constraintt a2;
138138
a2.univ_var = qvar;
139139
a2.upper_bound = s1.length();
140-
a2.premise = eq;
140+
a2.index_guard = eq;
141141
a2.body = constr2;
142142
constraints.push_back(a2);
143143

@@ -234,7 +234,7 @@ exprt string_constraint_generatort::add_axioms_for_compare_to(
234234
string_constraintt a2;
235235
a2.univ_var = i;
236236
a2.upper_bound = s1.length();
237-
a2.premise = res_null;
237+
a2.index_guard = res_null;
238238
a2.body = equal_exprt(s1[i], s2[i]);
239239
constraints.push_back(a2);
240240

@@ -268,7 +268,7 @@ exprt string_constraint_generatort::add_axioms_for_compare_to(
268268
string_constraintt a4;
269269
a4.univ_var = i2;
270270
a4.upper_bound = x;
271-
a4.premise = not_exprt(res_null);
271+
a4.index_guard = not_exprt(res_null);
272272
a4.body = equal_exprt(s1[i2], s2[i2]);
273273
constraints.push_back(a4);
274274

src/solvers/refinement/string_constraint_generator_indexof.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ exprt string_constraint_generatort::add_axioms_for_index_of(
6868
a4.univ_var = n;
6969
a4.lower_bound = lower_bound;
7070
a4.upper_bound = index;
71-
a4.premise = contains;
71+
a4.index_guard = contains;
7272
a4.body = not_exprt(equal_exprt(str[n], c));
7373
constraints.push_back(a4);
7474

@@ -77,7 +77,7 @@ exprt string_constraint_generatort::add_axioms_for_index_of(
7777
a5.univ_var = m;
7878
a5.lower_bound = lower_bound;
7979
a5.upper_bound = str.length();
80-
a5.premise = not_exprt(contains);
80+
a5.index_guard = not_exprt(contains);
8181
a5.body = notequal_exprt(str[m], c);
8282
constraints.push_back(a5);
8383

@@ -134,7 +134,7 @@ exprt string_constraint_generatort::add_axioms_for_index_of_string(
134134
string_constraintt a3;
135135
a3.univ_var = qvar;
136136
a3.upper_bound = needle.length();
137-
a3.premise = contains;
137+
a3.index_guard = contains;
138138
a3.body = equal_exprt(haystack[plus_exprt(qvar, offset)], needle[qvar]);
139139
constraints.push_back(a3);
140140

@@ -228,7 +228,7 @@ exprt string_constraint_generatort::add_axioms_for_last_index_of_string(
228228
string_constraintt a3;
229229
a3.univ_var = qvar;
230230
a3.upper_bound = needle.length();
231-
a3.premise = contains;
231+
a3.index_guard = contains;
232232
a3.body = constr3;
233233
constraints.push_back(a3);
234234

@@ -372,15 +372,15 @@ exprt string_constraint_generatort::add_axioms_for_last_index_of(
372372
a4.univ_var = n;
373373
a4.lower_bound = plus_exprt(index, index1);
374374
a4.upper_bound = end_index;
375-
a4.premise = contains;
375+
a4.index_guard = contains;
376376
a4.body = notequal_exprt(str[n], c);
377377
constraints.push_back(a4);
378378

379379
const symbol_exprt m = fresh_univ_index("QA_last_index_of2", index_type);
380380
string_constraintt a5;
381381
a5.univ_var = m;
382382
a5.upper_bound = end_index;
383-
a5.premise = not_exprt(contains);
383+
a5.index_guard = not_exprt(contains);
384384
a5.body = notequal_exprt(str[m], c);
385385
constraints.push_back(a5);
386386

src/solvers/refinement/string_constraint_generator_testing.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ exprt string_constraint_generatort::add_axioms_for_is_prefix(
4646
string_constraintt a2;
4747
a2.univ_var = qvar;
4848
a2.upper_bound = prefix.length();
49-
a2.premise = isprefix;
49+
a2.index_guard = isprefix;
5050
a2.body = equal_exprt(str[plus_exprt(qvar, offset)], prefix[qvar]);
5151
constraints.push_back(a2);
5252

@@ -156,7 +156,7 @@ exprt string_constraint_generatort::add_axioms_for_is_suffix(
156156
string_constraintt a2;
157157
a2.univ_var = qvar;
158158
a2.upper_bound = s0.length();
159-
a2.premise = issuffix;
159+
a2.index_guard = issuffix;
160160
a2.body = equal_exprt(s0[qvar], s1[qvar_shifted]);
161161
constraints.push_back(a2);
162162

@@ -228,7 +228,7 @@ exprt string_constraint_generatort::add_axioms_for_contains(
228228
string_constraintt a4;
229229
a4.univ_var = qvar;
230230
a4.upper_bound = s1.length();
231-
a4.premise = contains;
231+
a4.index_guard = contains;
232232
a4.body = equal_exprt(s1[qvar], s0[qvar_shifted]);
233233
constraints.push_back(a4);
234234

src/solvers/refinement/string_constraint_generator_transformation.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,15 @@ exprt string_constraint_generatort::add_axioms_for_set_length(
5454
string_constraintt a2;
5555
a2.univ_var = idx;
5656
a2.upper_bound = res.length();
57-
a2.premise = s1.axiom_for_length_gt(idx);
57+
a2.index_guard = s1.axiom_for_length_gt(idx);
5858
a2.body = equal_exprt(s1[idx], res[idx]);
5959
constraints.push_back(a2);
6060

6161
symbol_exprt idx2 = fresh_univ_index("QA_index_set_length2", index_type);
6262
string_constraintt a3;
6363
a3.univ_var = idx2;
6464
a3.upper_bound = res.length();
65-
a3.premise = s1.axiom_for_length_le(idx2);
65+
a3.index_guard = s1.axiom_for_length_le(idx2);
6666
a3.body = equal_exprt(res[idx2], constant_char(0, char_type));
6767
constraints.push_back(a3);
6868

@@ -440,7 +440,7 @@ exprt string_constraint_generatort::add_axioms_for_char_set(
440440
a3.univ_var = q;
441441
a3.lower_bound = from_integer(0, q.type());
442442
a3.upper_bound = res.length();
443-
a3.premise = a3_guard;
443+
a3.index_guard = a3_guard;
444444
a3.body = a3_body;
445445
constraints.push_back(a3);
446446

src/solvers/refinement/string_refinement.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,10 +1581,10 @@ static exprt negation_of_constraint(const string_constraintt &axiom)
15811581

15821582
// If the premise is false, the implication is trivially true, so the
15831583
// negation is false.
1584-
if(axiom.premise == false_exprt())
1584+
if(axiom.index_guard == false_exprt())
15851585
return false_exprt();
15861586

1587-
const and_exprt premise(axiom.premise, univ_within_bounds(axiom));
1587+
const and_exprt premise(axiom.index_guard, univ_within_bounds(axiom));
15881588
const and_exprt negaxiom(premise, not_exprt(axiom.body));
15891589

15901590
return negaxiom;
@@ -1709,14 +1709,14 @@ static std::pair<bool, std::vector<exprt>> check_axioms(
17091709
const symbol_exprt &univ_var = axiom.univ_var;
17101710
const exprt &bound_inf = axiom.lower_bound;
17111711
const exprt &bound_sup = axiom.upper_bound;
1712-
const exprt &prem = axiom.premise;
1712+
const exprt &prem = axiom.index_guard;
17131713
const exprt &body = axiom.body;
17141714

17151715
string_constraintt axiom_in_model;
17161716
axiom_in_model.univ_var = univ_var;
17171717
axiom_in_model.lower_bound = get(bound_inf);
17181718
axiom_in_model.upper_bound = get(bound_sup);
1719-
axiom_in_model.premise = get(prem);
1719+
axiom_in_model.index_guard = get(prem);
17201720
axiom_in_model.body = get(body);
17211721

17221722
exprt negaxiom=negation_of_constraint(axiom_in_model);
@@ -1813,7 +1813,7 @@ static std::pair<bool, std::vector<exprt>> check_axioms(
18131813
const exprt &val=v.second;
18141814
const string_constraintt &axiom=axioms.universal[v.first];
18151815

1816-
implies_exprt instance(axiom.premise, axiom.body);
1816+
implies_exprt instance(axiom.index_guard, axiom.body);
18171817
replace_expr(axiom.univ_var, val, instance);
18181818
// We are not sure the index set contains only positive numbers
18191819
exprt bounds = and_exprt(
@@ -2278,7 +2278,7 @@ static exprt instantiate(
22782278
return true_exprt();
22792279

22802280
exprt r = compute_inverse_function(stream, axiom.univ_var, val, idx);
2281-
implies_exprt instance(axiom.premise, axiom.body);
2281+
implies_exprt instance(axiom.index_guard, axiom.body);
22822282
replace_expr(axiom.univ_var, r, instance);
22832283
// We are not sure the index set contains only positive numbers
22842284
exprt bounds = and_exprt(

0 commit comments

Comments
 (0)