17 #include <unordered_set>
23 if(function_symbols.empty())
34 function_symbols.insert(
CPROVER_PREFIX "contracts_car_set_contains");
35 function_symbols.insert(
CPROVER_PREFIX "contracts_car_set_create");
36 function_symbols.insert(
CPROVER_PREFIX "contracts_car_set_insert");
37 function_symbols.insert(
CPROVER_PREFIX "contracts_car_set_remove");
38 function_symbols.insert(
39 CPROVER_PREFIX "contracts_check_replace_ensures_was_freed_preconditions");
43 function_symbols.insert(
CPROVER_PREFIX "contracts_link_allocated");
44 function_symbols.insert(
CPROVER_PREFIX "contracts_link_deallocated");
46 function_symbols.insert(
CPROVER_PREFIX "contracts_obeys_contract");
48 function_symbols.insert(
CPROVER_PREFIX "contracts_obj_set_append");
49 function_symbols.insert(
CPROVER_PREFIX "contracts_obj_set_contains_exact");
50 function_symbols.insert(
CPROVER_PREFIX "contracts_obj_set_contains");
51 function_symbols.insert(
CPROVER_PREFIX "contracts_obj_set_create_append");
53 "contracts_obj_set_create_indexed_by_object_id");
54 function_symbols.insert(
CPROVER_PREFIX "contracts_obj_set_release");
55 function_symbols.insert(
CPROVER_PREFIX "contracts_obj_set_remove");
56 function_symbols.insert(
CPROVER_PREFIX "contracts_pointer_in_range_dfcc");
58 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_add_allocated");
59 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_add_decl");
60 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_add_freeable");
61 function_symbols.insert(
63 "contracts_write_set_check_allocated_deallocated_is_empty");
65 "contracts_write_set_check_array_copy");
67 "contracts_write_set_check_array_replace");
69 "contracts_write_set_check_array_set");
71 "contracts_write_set_check_assignment");
72 function_symbols.insert(
73 CPROVER_PREFIX "contracts_write_set_check_assigns_clause_inclusion");
75 "contracts_write_set_check_deallocate");
77 "contracts_write_set_check_frees_clause_inclusion");
79 "contracts_write_set_check_havoc_object");
80 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_create");
82 "contracts_write_set_deallocate_freeable");
84 "contracts_write_set_havoc_get_assignable_target");
86 "contracts_write_set_havoc_object_whole");
87 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_havoc_slice");
89 "contracts_write_set_insert_assignable");
91 "contracts_write_set_insert_object_from");
93 "contracts_write_set_insert_object_upto");
95 "contracts_write_set_insert_object_whole");
96 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_record_dead");
98 "contracts_write_set_record_deallocated");
99 function_symbols.insert(
CPROVER_PREFIX "contracts_write_set_release");
120 if(static_symbols.empty())
126 static_symbols.insert(
CPROVER_PREFIX "malloc_failure_mode_return_null");
128 "malloc_failure_mode_assert_then_assume");
140 std::unordered_set<irep_idt> function_symbols;
143 return function_symbols.find(
id) != function_symbols.end() ||
150 std::unordered_set<irep_idt> static_symbols;
152 return static_symbols.find(
id) != static_symbols.end() ||
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
bool has_prefix(const std::string &s, const std::string &prefix)
static void init_function_symbols(std::unordered_set< irep_idt > &function_symbols)
bool dfcc_is_cprover_function_symbol(const irep_idt &id)
Returns true iff id is one of the known CPROVER functions or starts with __VERIFIER or nondet.
bool dfcc_is_cprover_static_symbol(const irep_idt &id)
Returns true iff the symbol is one of the known CPROVER static instrumentation variables or ends with...
static void init_static_symbols(std::unordered_set< irep_idt > &static_symbols)
const std::string & id2string(const irep_idt &d)
bool has_suffix(const std::string &s, const std::string &suffix)