|
ESBMC
Efficient SMT-based Context-Bounded Model Checker
|
Classification of assigns targets into direct, pointer, and struct-field categories. More...
#include <frame_enforcer.h>
Public Attributes | |
| std::vector< expr2tc > | direct_targets |
| Non-pointer targets matched structurally. | |
| std::vector< expr2tc > | pointer_targets |
| Pointer-typed targets from *ptr pattern. | |
| std::map< irep_idt, std::set< irep_idt > > | struct_field_targets |
| Direct struct field targets: maps global struct symbol name to the set of field names explicitly assigned. | |
| std::map< irep_idt, std::set< irep_idt > > | ptr_field_targets |
| Pointer-struct-field targets: maps pointer symbol name to the set of field names explicitly assigned through that pointer. | |
| std::map< irep_idt, std::vector< expr2tc > > | array_elem_targets |
| Array-element targets: maps an array symbol name to the indices the clause names. | |
Classification of assigns targets into direct, pointer, and struct-field categories.
Used to separate structurally-matchable targets from pointer-typed targets that require aliasing disjunctions, and from direct struct field targets that require per-field compliance checking.
Array-element targets: maps an array symbol name to the indices the clause names.
Used to assert every other element unchanged instead of the whole array, which any write falsifies. Example: __ESBMC_assigns(global[i]) → array_elem_targets["global"] = {i}
| std::vector<expr2tc> frame_enforcert::classified_assignst::direct_targets |
Non-pointer targets matched structurally.
| std::vector<expr2tc> frame_enforcert::classified_assignst::pointer_targets |
Pointer-typed targets from *ptr pattern.
Pointer-struct-field targets: maps pointer symbol name to the set of field names explicitly assigned through that pointer.
Example: __ESBMC_assigns(ctx->count) → ptr_field_targets["ctx"] = {"count"}
Direct struct field targets: maps global struct symbol name to the set of field names explicitly assigned.
Used to generate per-field compliance assertions instead of a coarse whole-struct assertion. Example: __ESBMC_assigns(global_pt.x) → struct_field_targets["global_pt"] = {"x"}