Proving that programs eventually do something good

  • Authors:
  • Byron Cook;Alexey Gotsman;Andreas Podelski;Andrey Rybalchenko;Moshe Y. Vardi

  • Affiliations:
  • Microsoft Research;University of Cambridge;University of Freiburg;EPFL and MPI-Saarbrücken;Rice University

  • Venue:
  • Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
  • Year:
  • 2007

Quantified Score

Hi-index 0.03

Visualization

Abstract

In recent years we have seen great progress made in the area of automatic source-level static analysis tools. However, most of today's program verification tools are limited to properties that guarantee the absence of bad events (safety properties). Until now no formal software analysis tool has provided fully automatic support for proving properties that ensure that good events eventually happen (liveness properties). In this paper we present such a tool, which handles liveness properties of large systems written in C. Liveness properties are described in an extension of the specification language used in the SDV system. We have used the tool to automatically prove critical liveness properties of Windows device drivers and found several previously unknown liveness bugs.