CBMC
string_insertion_builtin_function.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: String solver
4 
5 Author: Romain Brenguier, romain.brenguier@diffblue.com
6 
7 \*******************************************************************/
8 
9 #ifndef CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
10 #define CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
11 
13 
16 {
17 public:
21  std::vector<exprt> args;
22 
30  const exprt &return_code,
31  const std::vector<exprt> &fun_args,
33 
35  {
36  return result;
37  }
38  std::vector<array_string_exprt> string_arguments() const override
39  {
40  return {input1, input2};
41  }
42 
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;
48 
50  eval(const std::function<exprt(const exprt &)> &get_value) const override;
51 
52  std::string name() const override
53  {
54  return "insert";
55  }
56 
71  message_handlert &message_handler) const override;
72 
76  exprt length_constraint() const override;
77 
78  bool maybe_testing_function() const override
79  {
80  return false;
81  }
82 
83 protected:
85  const exprt &return_code,
88  {
89  }
90 };
91 
92 #endif // CPROVER_SOLVERS_STRINGS_STRING_INSERTION_BUILTIN_FUNCTION_H
string_builtin_function.h
string_insertion_builtin_functiont
String inserting a string into another one.
Definition: string_insertion_builtin_function.h:15
string_insertion_builtin_functiont::length_constraint
exprt length_constraint() const override
Definition: string_insertion_builtin_function.cpp:13
array_poolt
Correspondance between arrays and pointers string representations.
Definition: array_pool.h:41
string_builtin_functiont::return_code
exprt return_code
Definition: string_builtin_function.h:111
string_insertion_builtin_functiont::maybe_testing_function
bool maybe_testing_function() const override
Tells whether the builtin function can be a testing function, that is a function that does not return...
Definition: string_insertion_builtin_function.h:78
exprt
Base class for all expressions.
Definition: expr.h:55
string_constraintst
Collection of constraints of different types: existential formulas, universal formulas,...
Definition: string_constraint_generator.h:38
string_insertion_builtin_functiont::name
std::string name() const override
Definition: string_insertion_builtin_function.h:52
string_constraint_generatort
Definition: string_constraint_generator.h:47
string_builtin_functiont::array_pool
array_poolt & array_pool
Definition: string_builtin_function.h:122
string_insertion_builtin_functiont::input1
array_string_exprt input1
Definition: string_insertion_builtin_function.h:19
string_insertion_builtin_functiont::eval
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.
Definition: string_insertion_builtin_function.cpp:39
string_insertion_builtin_functiont::result
array_string_exprt result
Definition: string_insertion_builtin_function.h:18
string_insertion_builtin_functiont::string_result
optionalt< array_string_exprt > string_result() const override
Definition: string_insertion_builtin_function.h:34
string_insertion_builtin_functiont::string_insertion_builtin_functiont
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.
Definition: string_insertion_builtin_function.cpp:23
message_handlert
Definition: message.h:27
optionalt
nonstd::optional< T > optionalt
Definition: optional.h:35
string_builtin_functiont
Base class for string functions that are built in the solver.
Definition: string_builtin_function.h:72
string_insertion_builtin_functiont::constraints
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...
Definition: string_insertion_builtin_function.cpp:89
string_insertion_builtin_functiont::input2
array_string_exprt input2
Definition: string_insertion_builtin_function.h:20
string_insertion_builtin_functiont::args
std::vector< exprt > args
Definition: string_insertion_builtin_function.h:21
string_insertion_builtin_functiont::string_insertion_builtin_functiont
string_insertion_builtin_functiont(const exprt &return_code, array_poolt &array_pool)
Definition: string_insertion_builtin_function.h:84
string_insertion_builtin_functiont::string_arguments
std::vector< array_string_exprt > string_arguments() const override
Definition: string_insertion_builtin_function.h:38
array_string_exprt
Definition: string_expr.h:66