23 std::pair<exprt, string_constraintst>
39 str=utf8_to_utf16_little_endian(c_str);
44 for(std::size_t i = 0; i < str.size(); i++)
63 std::pair<exprt, string_constraintst>
82 std::pair<exprt, string_constraintst>
88 if(
const auto if_expr = expr_try_dynamic_cast<if_exprt>(arg))
96 else if(
const auto constant_expr = expr_try_dynamic_cast<constant_exprt>(arg))
110 std::pair<exprt, string_constraintst>
static exprt guard(const exprt::operandst &guards, exprt cond)
bitvector_typet char_type()
exprt get_or_create_length(const array_string_exprt &s)
Get the length of an array_string_exprt from the array_pool.
array_string_exprt find(const exprt &pointer, const exprt &length)
Creates a new array if the pointer is not pointing to an array.
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Base class for all expressions.
typet & type()
Return the type of the expression.
Application of (mathematical) function.
exprt::operandst argumentst
std::pair< exprt, string_constraintst > add_axioms_for_empty_string(const function_application_exprt &f)
Add axioms to say that the returned string expression is empty.
std::pair< exprt, string_constraintst > add_axioms_for_cprover_string(const array_string_exprt &res, const exprt &arg, const exprt &guard)
Convert an expression of type string_typet to a string_exprt.
std::pair< exprt, string_constraintst > add_axioms_from_literal(const function_application_exprt &f)
String corresponding to an internal cprover string.
std::pair< exprt, string_constraintst > add_axioms_for_constant(const array_string_exprt &res, irep_idt sval, const exprt &guard=true_exprt())
Add axioms ensuring that the provided string expression and constant are equal.
std::pair< exprt, string_constraintst > combine_results(std::pair< exprt, string_constraintst > result1, std::pair< exprt, string_constraintst > result2)
Combine the results of two add_axioms function by taking the maximum of the return codes and merging ...
The Boolean constant true.
const typet & subtype() const
The type of an expression, extends irept.
const std::string & id2string(const irep_idt &d)
API to expression classes for 'mathematical' expressions.
#define PRECONDITION(CONDITION)
Generates string constraints to link results from string functions with their arguments.
signedbv_typet get_return_code_type()
Collection of constraints of different types: existential formulas, universal formulas,...
std::vector< exprt > existential
const type_with_subtypet & to_type_with_subtype(const typet &type)
std::wstring widen(const char *s)