Techniques for Memory-Efficient Model Checking of C and C++ Code
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 untimed-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.
KeywordsState Vector Model Check Hash Table Decomposition Tree Memory Allocation
- 4.Holzmann, G.J.: State compression in SPIN: recursive indexing and compression training runs. In: The International SPIN Workshop (1997)Google Scholar
- 5.Holzmann, G.J., Godefroid, P., Pirottin, D.: Coverage preserving reduction strategies for reachability analysis. In: PSTV, pp. 349–363 (1992)Google Scholar
- 9.Štill, V.: Compression, State Space, for the DiVinE Model Checker, : Bachelor’s thesis. Masaryk University Brno, Faculty of Informatics (2013)Google Scholar