Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Model checking
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
Modular verification of software components in C
Proceedings of the 25th International Conference on Software Engineering
Counterexample-guided abstraction refinement for symbolic model checking
Journal of the ACM (JACM)
Efficient Verification of Sequential and Concurrent C Programs
Formal Methods in System Design
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A hoare calculus for the verification of synchronous languages
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
Hi-index | 0.00 |
In this paper we investigate how formal software verification systems can be improved by utilising parallel assignment in weakest precondition computations. We begin with an introduction to modern software verification systems. Specifically, we review the method in which software abstractions are built using counterexample-guided abstraction refinement (CEGAR). The classical NP-complete parallel assignment problem is first posed, and then an additional restriction is added to create a special case in which the problem is tractable with an O(n^2) algorithm. The parallel assignment problem is then discussed in the context of weakest precondition computations. In this special situation where statements can be assumed to execute truly concurrently, we show that any sequence of simple assignment statements without function calls can be transformed into an equivalent parallel assignment block. Results of compressing assignment statements into a parallel form with this algorithm are presented for a wide variety of software applications. The proposed algorithms were implemented in the ComFoRT reasoning framework [J. Ivers and N. Sharygina. Overview of ComFoRT: A model checking reasoning framework. Technical Report CMU/SEI-2004-TN-018, Carnegie Mellon Software Engineering Institute, 2004] and used to measure the improvement in the verification of real software systems. This improvement in time proved to be significant for many classes of software.