Go to the documentation of this file.
10 #ifndef CPROVER_UTIL_EXPR_UTIL_H
11 #define CPROVER_UTIL_EXPR_UTIL_H
71 const std::function<
bool(
const typet &)> &pred,
115 #endif // CPROVER_UTIL_EXPR_UTIL_H
Determine whether an expression is constant.
Operator to update elements in structs and arrays.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
exprt make_and(exprt a, exprt b)
Conjunction of two expressions.
The type of an expression, extends irept.
const exprt & skip_typecast(const exprt &expr)
find the expression nested inside typecasts, if any
The trinary if-then-else operator.
bool has_subtype(const typet &type, const std::function< bool(const typet &)> &pred, const namespacet &ns)
returns true if any of the contained types satisfies pred
virtual bool is_constant_address_of(const exprt &) const
this function determines which reference-typed expressions are constant
Base class for all expressions.
bool has_subexpr(const exprt &, const std::function< bool(const exprt &)> &pred)
returns true if the expression has a subexpression that satisfies pred
if_exprt lift_if(const exprt &, std::size_t operand_number)
lift up an if_exprt one level
with_exprt make_with_expr(const update_exprt &)
converts an update expr into a (possibly nested) with expression
constant_exprt make_boolean_expr(bool)
returns true_exprt if given true and false_exprt otherwise
exprt is_not_zero(const exprt &, const namespacet &ns)
converts a scalar/float expression to C/C++ Booleans
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
exprt boolean_negate(const exprt &)
negate a Boolean expression, possibly removing a not_exprt, and swapping false and true
virtual bool is_constant(const exprt &) const
This function determines what expressions are to be propagated as "constants".
bool operator()(const exprt &e) const
returns true iff the expression can be considered constant
Operator to update elements in structs and arrays.
exprt make_binary(const exprt &)
splits an expression with >=3 operands into nested binary expressions
bool is_assignable(const exprt &)
Returns true iff the argument is one of the following:
bool is_null_pointer(const constant_exprt &expr)
Returns true if expr has a pointer type and a value NULL; it also returns true when expr has value ze...
A constant literal expression.