9 #ifndef CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
10 #define CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
31 const std::vector<exprt> &fun_args,
44 virtual std::vector<mp_integer>
eval(
45 const std::vector<mp_integer> &input1_value,
46 const std::vector<mp_integer> &input2_value,
47 const std::vector<mp_integer> &args_value)
const;
50 eval(
const std::function<
exprt(
const exprt &)> &get_value)
const override;
52 std::string
name()
const override
Correspondance between arrays and pointers string representations.
Base class for all expressions.
Base class for string functions that are built in the solver.
String inserting a string into another one.
string_insertion_builtin_functiont(const exprt &return_code, array_poolt &array_pool)
string_constraintst constraints(string_constraint_generatort &generator, message_handlert &message_handler) const override
Constraints ensuring the result corresponds to input1 where we inserted input2 at position offset giv...
string_insertion_builtin_functiont(const exprt &return_code, const std::vector< exprt > &fun_args, array_poolt &array_pool)
Constructor from arguments of a function application.
exprt length_constraint() const override
std::string name() const override
array_string_exprt input1
std::optional< array_string_exprt > string_result() const override
array_string_exprt result
array_string_exprt input2
std::vector< array_string_exprt > string_arguments() const override
virtual std::vector< mp_integer > eval(const std::vector< mp_integer > &input1_value, const std::vector< mp_integer > &input2_value, const std::vector< mp_integer > &args_value) const
Evaluate the result from a concrete valuation of the arguments.
bool maybe_testing_function() const override
Tells whether the builtin function can be a testing function, that is a function that does not return...
std::vector< exprt > args
Collection of constraints of different types: existential formulas, universal formulas,...