63 const exprt &f,
bool double_precision)
133 equal_exprt meq(magnitude[qvar_inf], infinity_string[qvar_inf]);
146 equal_exprt eq_zero(magnitude[qvar_zero], zero_string[qvar_zero]);
218 return power(10, nb-1);
232 assert(type.
id()==ID_signedbv);
255 or_exprt a2(starts_with_digit, starts_with_minus);
258 for(
size_t size=1; size<=max_size; size++)
273 for(
size_t j=1; j<size; j++)
283 all_numbers=
and_exprt(all_numbers, is_number);
286 axioms.push_back(all_numbers);
352 assert(type.
id()==ID_signedbv);
367 for(
size_t size=1; size<=max_size; size++)
373 for(
size_t j=0; j<size; j++)
385 all_numbers=
and_exprt(all_numbers, is_number);
445 exprt char_array=args[0];
446 exprt offset=args[1];
454 axioms.push_back(res.axiom_for_has_length(count));
465 assert(args.size()==1);
484 assert(type.
id()==ID_signedbv);
492 for(
unsigned size=1; size<=10; size++)
497 for(
unsigned j=1; j<size; j++)
exprt isinf(const exprt &, const ieee_float_spect &)
The type of an expression.
string_exprt add_axioms_for_java_char_array(const exprt &char_array)
add axioms corresponding to the String.valueOf([C) java function
Generates string constraints to link results from string functions with their arguments.
A generic base class for relations, i.e., binary predicates.
application of (mathematical) function
string_exprt add_axioms_from_bool(const function_application_exprt &f)
add axioms corresponding to the String.valueOf(Z) java function
const typet & get_char_type() const
static symbol_exprt fresh_symbol(const irep_idt &prefix, const typet &type=bool_typet())
generate a new symbol expression of the given type with some prefix
equal_exprt axiom_for_has_length(const exprt &rhs) const
symbol_exprt fresh_univ_index(const irep_idt &prefix, const typet &type)
generate an index symbol to be used as an universaly quantified variable
string_exprt add_axioms_from_double(const function_application_exprt &f)
add axioms corresponding to the String.valueOf(D) java function
The trinary if-then-else operator.
equal_exprt axiom_for_has_same_length_as(const string_exprt &rhs) const
const std::size_t MAX_INTEGER_LENGTH
string_exprt add_axioms_from_long(const function_application_exprt &f)
add axioms corresponding to the String.valueOf(J) java function
const std::size_t MAX_LONG_LENGTH
binary_relation_exprt axiom_for_is_shorter_than(const string_exprt &rhs) const
static ieee_float_spect double_precision()
static mp_integer smallest_by_digit(int nb)
gives the smallest integer with the specified number of digits
string_exprt fresh_string(const refined_string_typet &type)
construct a string expression whose length and content are new variables
const irep_idt & id() const
The boolean constant true.
const exprt & length() const
string_exprt add_axioms_from_float(const function_application_exprt &f)
add axioms corresponding to the String.valueOf(F) java function
exprt::operandst argumentst
string_exprt add_axioms_for_value_of(const function_application_exprt &f)
add axioms corresponding to the String.valueOf([C) and String.valueOf([CII) functions ...
string_exprt add_axioms_for_string_expr(const exprt &expr)
obtain a refined string expression corresponding to string variable of string function call ...
const refined_string_typet & to_refined_string_type(const typet &type)
string_exprt add_axioms_for_concat(const string_exprt &s1, const string_exprt &s2)
add axioms to say that the returned string expression is equal to the concatenation of the two string...
exprt add_axioms_for_parse_int(const function_application_exprt &f)
add axioms corresponding to the Integer.parseInt java function
static ieee_float_spect single_precision()
std::list< exprt > axioms
const typet & get_index_type() const
bitvector_typet index_type()
The unary minus expression.
Base class of bitvector types.
std::size_t get_width() const
string_exprt add_axioms_from_char(const function_application_exprt &f)
add axioms corresponding to the String.valueOf(C) java function
static constant_exprt constant_char(int i, const typet &char_type)
generate constant character expression with character type.
string_exprt add_axioms_for_constant(irep_idt sval, const refined_string_typet &ref_type)
add axioms saying the returned string expression should be equal to the string constant ...
bool is_number(const typet &type)
exprt is_zero(const exprt &, const ieee_float_spect &)
Base class for all expressions.
binary_relation_exprt axiom_for_is_strictly_longer_than(const exprt &rhs) const
exprt int_of_hex_char(const exprt &chr) const
returns the value represented by the character
string_exprt add_axioms_from_int(const function_application_exprt &f)
add axioms corresponding to the String.valueOf(I) java function
Expression to hold a symbol (variable)
string_exprt add_axioms_from_int_hex(const exprt &i, const refined_string_typet &ref_type)
add axioms stating that the returned string corresponds to the integer argument written in hexadecima...
static const function_application_exprt::argumentst & args(const function_application_exprt &expr, size_t nb)
bitvector_typet char_type()
exprt isnan(const exprt &, const ieee_float_spect &)
const bitvector_typet & to_bitvector_type(const typet &type)
Cast a generic typet to a bitvector_typet.