@@ -117,12 +117,10 @@ bvt boolbvt::convert_index(const index_exprt &expr)
117
117
118
118
binary_relation_exprt lower_bound (
119
119
from_integer (0 , index .type ()), ID_le, index );
120
+ CHECK_RETURN (lower_bound.lhs ().is_not_nil ());
120
121
binary_relation_exprt upper_bound (
121
122
index , ID_lt, from_integer (array_size, index .type ()));
122
-
123
- if (lower_bound.lhs ().is_nil () ||
124
- upper_bound.rhs ().is_nil ())
125
- throw " number conversion failed (2)" ;
123
+ CHECK_RETURN (upper_bound.rhs ().is_not_nil ());
126
124
127
125
and_exprt range_condition (lower_bound, upper_bound);
128
126
implies_exprt implication (range_condition, value_equality);
@@ -174,11 +172,12 @@ bvt boolbvt::convert_index(const index_exprt &expr)
174
172
for (mp_integer i=0 ; i<array_size; i=i+1 )
175
173
{
176
174
index_equality.rhs ()=from_integer (i, index_equality.lhs ().type ());
175
+ CHECK_RETURN (index_equality.rhs ().is_not_nil ());
177
176
178
- if (index_equality. rhs (). is_nil ())
179
- throw " number conversion failed (1) " ;
180
-
181
- assert (it != array. operands (). end () );
177
+ INVARIANT (
178
+ it != array. operands (). end (),
179
+ " this loop iterates over the array, so `it` shouldn't be increased "
180
+ " past the array's end" );
182
181
183
182
value_equality.rhs ()=*it++;
184
183
@@ -201,9 +200,10 @@ bvt boolbvt::convert_index(const index_exprt &expr)
201
200
// get literals for the whole array
202
201
203
202
const bvt &array_bv=convert_bv (array);
204
-
205
- if (array_size*width!=array_bv.size ())
206
- throw " unexpected array size" ;
203
+ DATA_INVARIANT (
204
+ array_size * width == array_bv.size (),
205
+ " the size of an array bitvector is the size of the individual elements "
206
+ " times the number of elements" );
207
207
208
208
// TODO: maybe a shifter-like construction would be better
209
209
// Would be a lot more compact but propagate worse
@@ -231,9 +231,7 @@ bvt boolbvt::convert_index(const index_exprt &expr)
231
231
for (mp_integer i=0 ; i<array_size; i=i+1 )
232
232
{
233
233
index_equality.rhs ()=from_integer (i, index_equality.lhs ().type ());
234
-
235
- if (index_equality.rhs ().is_nil ())
236
- throw " number conversion failed (1)" ;
234
+ CHECK_RETURN (index_equality.rhs ().is_not_nil ());
237
235
238
236
mp_integer offset=i*width;
239
237
@@ -258,7 +256,7 @@ bvt boolbvt::convert_index(const index_exprt &expr)
258
256
259
257
typet constant_type=index .type (); // type of index operand
260
258
261
- assert (array_size> 0 );
259
+ DATA_INVARIANT (array_size > 0 , " array sizes are expected to be positive " );
262
260
263
261
for (mp_integer i=0 ; i<array_size; i=i+1 )
264
262
{
0 commit comments