9#ifndef CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
10#define CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
44 virtual std::vector<mp_integer>
eval(
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
52 std::string
name()
const override {
…}
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
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...
exprt length_constraint() const override
std::string name() const override
array_string_exprt input1
std::optional< array_string_exprt > string_result() const override
std::vector< array_string_exprt > string_arguments() const override
array_string_exprt result
array_string_exprt input2
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,...