ESP
- 17 May 2002
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 37 (5), 57-68
- https://doi.org/10.1145/543552.512538
Abstract
In this paper, we present a new algorithm for partial program verification that runs in polynomial time and space. We are interested in checking that a program satisfies a given temporal safety property. Our insight is that by accurately modeling only those branches in a program for which the property-related behavior differs along the arms of the branch, we can design an algorithm that is accurate enough to verify the program with respect to the given property, without paying the potentially exponential cost of full path-sensitive analysis.We have implemented this "property simulation" algorithm as part of a partial verification tool called ESP. We present the results of applying ESP to the problem of verifying the file I/O behavior of a version of the GNU C compiler (gcc, 140,000 LOC). We are able to prove that all of the 646 calls to .fprintf in the source code of gcc are guaranteed to print to valid, open files. Our results show that property simulation scales to large programs and is accurate enough to verify meaningful properties.Keywords
This publication has 19 references indexed in Scilit:
- Extended static checking for JavaPublished by Association for Computing Machinery (ACM) ,2002
- Bugs as deviant behaviorPublished by Association for Computing Machinery (ACM) ,2001
- Unification-based pointer analysis with directional assignmentsPublished by Association for Computing Machinery (ACM) ,2000
- Expansion-Based Removal of Semantic Partial RedundanciesLecture Notes in Computer Science, 1999
- Improving data-flow analysis with path profilesPublished by Association for Computing Machinery (ACM) ,1998
- Static detection of dynamic memory errorsPublished by Association for Computing Machinery (ACM) ,1996
- Precise interprocedural dataflow analysis via graph reachabilityPublished by Association for Computing Machinery (ACM) ,1995
- Gated SSA-based demand-driven symbolic analysis for parallelizing compilersPublished by Association for Computing Machinery (ACM) ,1995
- Simplification by Cooperating Decision ProceduresACM Transactions on Programming Languages and Systems, 1979
- Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpointsPublished by Association for Computing Machinery (ACM) ,1977