Joining dataflow with predicates
- 1 September 2005
- proceedings article
- Published by Association for Computing Machinery (ACM)
- Vol. 30 (5) , 227-236
- https://doi.org/10.1145/1081706.1081742
Abstract
Dataflow analyses sacrifice path-sensitivity for efficiency and lead to false positives when used for verification. Predicate refinement based model checking methods are path-sensitive but must perform many expensive iterations to find all the relevant facts about a program, not all of which are naturally expressed and analyzed using predicates. We show how to join these complementary techniques to obtain efficient and precise versions of any lattice-based dataflow analysis using predicated lattices. A predicated lattice partitions the program state according to a set of predicates and tracks a lattice element for each partition. The resulting dataflow analysis is more precise than the eager dataflow analysis without the predicates.In addition, we automatically infer predicates to rule out imprecisions. The result is a dataflow analysis that can adaptively refine its precision. We then instantiate this generic framework using a symbolic execution lattice, which tracks pointer and value information precisely. We give experimental evidence that our combined analysis is both more precise than the eager analysis in that it is sensitive enough to prove various properties, as well as much faster than the lazy analysis, as many relevant facts are eagerly computed, thus reducing the number of iterations.This results in an order of magnitude improvement in the running times from a purely lazy analysis.Keywords
This publication has 18 references indexed in Scilit:
- Flow analysis for verifying properties of concurrent software systemsACM Transactions on Software Engineering and Methodology, 2004
- Abstractions from proofsPublished by Association for Computing Machinery (ACM) ,2004
- Checking and inferring local non-aliasingPublished by Association for Computing Machinery (ACM) ,2003
- ESPPublished by Association for Computing Machinery (ACM) ,2002
- Timing Verification by Successive ApproximationInformation and Computation, 1995
- Precise interprocedural dataflow analysis via graph reachabilityPublished by Association for Computing Machinery (ACM) ,1995
- Constant propagation with conditional branchesACM Transactions on Programming Languages and Systems, 1991
- Systematic design of program analysis frameworksPublished by Association for Computing Machinery (ACM) ,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
- A unified approach to global program optimizationPublished by Association for Computing Machinery (ACM) ,1973