Termination proofs for systems code

B Cook, A Podelski, A Rybalchenko - ACM Sigplan Notices, 2006 - dl.acm.org
ACM Sigplan Notices, 2006dl.acm.org
Program termination is central to the process of ensuring that systems code can always
react. We describe a new program termination prover that performs a path-sensitive and
context-sensitive program analysis and provides capacity for large program fragments (ie
more than 20,000 lines of code) together with support for programming language features
such as arbitrarily nested loops, pointers, function-pointers, side-effects, etc. We also present
experimental results on device driver dispatch routines from theWindows operating system …
Program termination is central to the process of ensuring that systems code can always react. We describe a new program termination prover that performs a path-sensitive and context-sensitive program analysis and provides capacity for large program fragments (i.e. more than 20,000 lines of code) together with support for programming language features such as arbitrarily nested loops, pointers, function-pointers, side-effects, etc.We also present experimental results on device driver dispatch routines from theWindows operating system. The most distinguishing aspect of our tool is how it shifts the balance between the two tasks of constructing and respectively checking the termination argument. Checking becomes the hard step. In this paper we show how we solve the corresponding challenge of checking with binary reachability analysis.
ACM Digital Library