Symmetry-Aware Predicate Abstraction Shared-Variable Concurrent Programs
- 10:00 8th July 2011 ( week 10, Trinity Term 2011 )Room 380
Predicate abstraction is a key enabling technology for applying finite-state model checkers to programs written in mainstream languages.
It has been used very successfully for debugging sequential system-level C code. Although model checking was originally designed for analyzing concurrent systems, there is little evidence of fruitful applications of predicate abstraction to shared-variable concurrent software. In this talk, I will present work due to be presented soon at the CAV 2011 conference which aims to close this gap.
We have developed a symmetry-aware predicate abstraction strategy: it takes into account the replicated structure of C programs that consist of many threads executing the same procedure, and generates a Boolean program template whose multi-threaded execution soundly overapproximates the concurrent C program. State explosion during model checking parallel instantiations of this template can now be absorbed by exploiting symmetry. We have implemented our method in the SatAbs predicate abstraction framework, and demonstrate its superior performance over alternative approaches on a range of synchronization programs.
This is joint work with Alexander Kaiser, Daniel Kroening and Thomas Wahl.