Techniques for Memory-Efficient Model Checking of C and C++ Code
| Authors | |
|---|---|
| Year of publication | 2015 |
| Type | Article in Proceedings |
| Conference | Software Engineering and Formal Methods |
| MU Faculty or unit | |
| Citation | |
| Doi | https://doi.org/10.1007/978-3-319-22969-0_19 |
| Field | Informatics |
| Keywords | LLVM; model checking; compression; memory-efficient; explicit-state |
| Description | We present an overview of techniques that, in combination, lead to a memory-efficient implementation of a model checker for LLVM bitcode, suitable for verification of realistic C and C++ programs. As a central component, we present the design of a tree compression scheme and evaluate the implementation in context of explicit-state safety, LTL and untime-LTL (for timed automata) model checking. Our design is characterised by dynamic, multi-way adaptive partitioning of state vectors for efficient storage in a tree-compressed hash table, representing the closed set in the model checking algorithm. To complement the tree compression technique, we present a special-purpose memory allocation algorithm with very compact memory layout and negligible performance penalty. |
| Related projects: |