diff --git a/src/solvers/flattening/boolbv_byte_extract.cpp b/src/solvers/flattening/boolbv_byte_extract.cpp index 05a49f4ba62..941da33c89b 100644 --- a/src/solvers/flattening/boolbv_byte_extract.cpp +++ b/src/solvers/flattening/boolbv_byte_extract.cpp @@ -161,9 +161,10 @@ bvt boolbvt::convert_byte_extract(const byte_extract_exprt &expr) else equal_bv[j]=const_literal(true); - prop.l_set_to_true(prop.limplies( - convert(equal_exprt(expr.offset(), from_integer(i, constant_type))), - prop.land(equal_bv))); + const bvt &eq_bv = convert_bv( + equal_exprt(expr.offset(), from_integer(i, constant_type))); + CHECK_RETURN(eq_bv.size() == 1); + prop.l_set_to_true(prop.limplies(eq_bv[0], prop.land(equal_bv))); } } else @@ -173,8 +174,10 @@ bvt boolbvt::convert_byte_extract(const byte_extract_exprt &expr) for(std::size_t i=0; i(offset + j)]); - prop.l_set_to_true(prop.limplies( - convert(equal_exprt(index, from_integer(i, index.type()))), - prop.land(equal_bv))); + const bvt &index_eq = + convert_bv(equal_exprt(index, from_integer(i, index.type()))); + CHECK_RETURN(index_eq.size() == 1); + prop.l_set_to_true(prop.limplies(index_eq[0], prop.land(equal_bv))); } } else @@ -229,8 +235,10 @@ bvt boolbvt::convert_index(const index_exprt &expr) for(mp_integer i=0; i(i * op2_bv.size()); @@ -183,7 +185,9 @@ void boolbvt::convert_with_bv( const bvt &prev_bv, bvt &next_bv) { - literalt l=convert(op2); + const bvt &bv = convert_bv(op2); + CHECK_RETURN(bv.size() == 1); + literalt l = bv[0]; if(const auto op1_value = numeric_cast(op1)) { @@ -201,7 +205,9 @@ void boolbvt::convert_with_bv( { exprt counter=from_integer(i, counter_type); - literalt eq_lit=convert(equal_exprt(op1, counter)); + const bvt &eq_bv = convert_bv(equal_exprt(op1, counter)); + CHECK_RETURN(eq_bv.size() == 1); + literalt eq_lit = eq_bv[0]; next_bv[i]=prop.lselect(eq_lit, l, prev_bv[i]); } diff --git a/src/solvers/flattening/bv_pointers.cpp b/src/solvers/flattening/bv_pointers.cpp index 56a4e07fb21..533c4e40bbb 100644 --- a/src/solvers/flattening/bv_pointers.cpp +++ b/src/solvers/flattening/bv_pointers.cpp @@ -197,7 +197,9 @@ bool bv_pointerst::convert_address_of_rec( { const if_exprt &ifex=to_if_expr(expr); - literalt cond=convert(ifex.cond()); + const bvt &cond_bv = convert_bv(ifex.cond()); + CHECK_RETURN(cond_bv.size() == 1); + literalt cond = cond_bv[0]; bvt bv1, bv2;