53 overflow_expr.lhs().type() == overflow_expr.rhs().type(),
54 "operands of overflow_mult expression shall have same type");
131 result.erase(result.begin(), result.begin() +
old_size);
140 result.erase(result.begin(), result.begin() +
old_size - 1);
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
virtual const bvt & convert_bv(const exprt &expr, const optionalt< std::size_t > expected_width=nullopt)
Convert expression to vector of literalts, using an internal cache to speed up conversion if availabl...
virtual literalt convert_overflow(const exprt &expr)
static bvt build_constant(const mp_integer &i, std::size_t width)
literalt overflow_add(const bvt &op0, const bvt &op1, representationt rep)
literalt overflow_sub(const bvt &op0, const bvt &op1, representationt rep)
static bvt shift(const bvt &op, const shiftt shift, std::size_t distance)
literalt overflow_negate(const bvt &op)
bvt multiplier(const bvt &op0, const bvt &op1, representationt rep)
static bvt extension(const bvt &bv, std::size_t new_size, representationt rep)
literalt rel(const bvt &bv0, irep_idt id, const bvt &bv1, representationt rep)
Base class for all expressions.
const irep_idt & id() const
virtual literalt convert_rest(const exprt &expr)
virtual literalt land(literalt a, literalt b)=0
virtual literalt lselect(literalt a, literalt b, literalt c)=0
virtual literalt lequal(literalt a, literalt b)=0
virtual literalt lor(literalt a, literalt b)=0
std::vector< literalt > bvt
literalt const_literal(bool value)
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
const binary_exprt & to_binary_expr(const exprt &expr)
Cast an exprt to a binary_exprt.
const unary_exprt & to_unary_expr(const exprt &expr)
Cast an exprt to a unary_exprt.