skip to main content
10.1145/2254064.2254112acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Synthesizing software verifiers from proof rules

Published: 11 June 2012 Publication History

Abstract

Automatically generated tools can significantly improve programmer productivity. For example, parsers and dataflow analyzers can be automatically generated from declarative specifications in the form of grammars, which tremendously simplifies the task of implementing a compiler. In this paper, we present a method for the automatic synthesis of software verification tools. Our synthesis procedure takes as input a description of the employed proof rule, e.g., program safety checking via inductive invariants, and produces a tool that automatically discovers the auxiliary assertions required by the proof rule, e.g., inductive loop invariants and procedure summaries. We rely on a (standard) representation of proof rules using recursive equations over the auxiliary assertions. The discovery of auxiliary assertions, i.e., solving the equations, is based on an iterative process that extrapolates solutions obtained for finitary unrollings of equations. We show how our method synthesizes automatic safety and liveness verifiers for programs with procedures, multi-threaded programs, and functional programs. Our experimental comparison of the resulting verifiers with existing state-of-the-art verification tools confirms the practicality of the approach.

References

[1]
A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Pearson, 2006.
[2]
A. Aiken. Introduction to set constraint-based program analysis. Sci. Comput. Program., 35 (2), 1999.
[3]
A. Aiken, M. Fähndrich, J. S. Foster, and Z. Su. A toolkit for constructing type- and constraint-based program analyses. In Types in Compilation, 1998.
[4]
T. Ball and S. K. Rajamani. The SLAM project: debugging system software via static analysis. In POPL, 2002.
[5]
T. Ball, A. Podelski, and S. K. Rajamani. Boolean and cartesian abstraction for model checking C programs. In TACAS, 2001.
[6]
D. Beyer. Competition on software verification - (SV-COMP). In TACAS, 2012.
[7]
D. Beyer and M. E. Keremoglu. CPAchecker: A tool for configurable software verification. In CAV, 2011.
[8]
A. R. Bradley, Z. Manna, and H. B. Sipma. Linear ranking with reachability. In CAV, 2005.
[9]
R. Bruttomesso, A. Cimatti, A. Franzén, A. Griggio, and R. Sebastiani. The MathSAT 4SMT solver. In CAV, 2008.
[10]
E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In CAV, 2000.
[11]
B. Cook, A. Podelski, and A. Rybalchenko. Termination proofs for systems code. In PLDI, 2006.
[12]
B. Cook, A. Podelski, and A. Rybalchenko. Summarization for termination: no return! Formal Methods in System Design, 35 (3), 2009.
[13]
C. Flanagan and S. Qadeer. Thread-modular model checking. In SPIN, 2003.
[14]
T. Freeman and F. Pfenning. Refinement types for ML. In PLDI, 1991.
[15]
S. Graf and H. Saïdi. Construction of abstract state graphs with PVS. In CAV, 1997.
[16]
S. Grebenshchikov, A. Gupta, N. P. Lopes, C. Popeea, and A. Rybalchenko. HSF(C): A software verifier based on Horn clauses - (competition contribution). In TACAS, 2012.
[17]
A. Gupta, C. Popeea, and A. Rybalchenko. Solving recursion-free horn clauses over LIUIF. In APLAS, 2011
[18]
A. Gupta, C. Popeea, and A. Rybalchenko. Threader: A constraint-based verifier for multi-threaded programs. In CAV, 2011.
[19]
A. Gupta, C. Popeea, and A. Rybalchenko. Predicate abstraction and refinement for verifying multi-threaded programs. In POPL, 2011.
[20]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL, 2002.
[21]
T. A. Henzinger, R. Jhala, R. Majumdar, and K. L. McMillan. Abstractions from proofs. In POPL, 2004.
[22]
K. Hoder, N. Bjørner, and L. de Moura. μZ- an efficient engine for fixed points with constraints. In CAV, 2011.
[23]
F. Ivancic, Z. Yang, M. K. Ganai, A. Gupta, I. Shlyakhter, and P. Ashar. F-Soft: Software verification platform. In CAV, 2005.
[24]
R. Jhala, R. Majumdar, and A. Rybalchenko. HMC: Verifying functional programs using abstract interpreters. In CAV, 2011.
[25]
C. B. Jones. Tentative steps toward a development method for interfering programs. ACM Trans. Program. Lang. Syst., 5 (4), 1983.
[26]
K. W. Knowles and C. Flanagan. Type reconstruction for general refinement types. In ESOP, 2007.
[27]
J. Kodumal and A. Aiken. Banshee: A scalable constraint-based analysis toolkit. In SAS, 2005.
[28]
M. S. Lam, J. Whaley, V. B. Livshits, M. C. Martin, D. Avots, M. Carbin, and C. Unkel. Context-sensitive program analysis as database queries. In PODS, 2005.
[29]
S. Lerner, T. D. Millstein, E. Rice, and C. Chambers. Automated soundness proofs for dataflow analyses and transformations via local rules. In POPL, 2005.
[30]
Z. Manna and A. Pnueli. Temporal verification of reactive systems: safety. 1995.
[31]
F. Martin. PAG -- An efficient program analyzer generator. STTT, 2 (1), 1998.
[32]
K. L. McMillan. An interpolating theorem prover. TCS, 2005.
[33]
K. L. McMillan. Lazy abstraction with interpolants. In CAV, 2006.
[34]
M. Naik, A. Aiken, and J. Whaley. Effective static race detection for Java. In PLDI, 2006.
[35]
G. C. Necula, S. McPeak, S. P. Rahul, and W. Weimer. CIL: Intermediate language and tools for analysis and transformation of C programs. In CC, 2002.
[36]
S. S. Owicki and D. Gries. An axiomatic proof technique for parallel programs I. Acta Inf., 6, 1976.
[37]
A. Podelski and A. Rybalchenko. Transition invariants. In LICS, 2004.
[38]
A. Podelski and A. Rybalchenko. A complete method for the synthesis of linear ranking functions. In VMCAI, 2004.
[39]
C. Popeea and A. Rybalchenko. Compositional termination proofs for multi-threaded programs. In TACAS, 2012.
[40]
W. H. Press, B. P. Flannery, S. A. Teukolsky, and W. T. Vetterling. Numerical Recipes in C: The Art of Scientific Computing. 1992.
[41]
Y. S. Ramakrishna, C. R. Ramakrishnan, I. V. Ramakrishnan, S. A. Smolka, T. Swift, and D. S. Warren. Efficient model checking using tabled resolution. In CAV, 1997.
[42]
T. W. Reps, S. Horwitz, and S. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In POPL, 1995.
[43]
P. M. Rondon, M. Kawaguchi, and R. Jhala. Liquid types. In PLDI, 2008.
[44]
G. Rosu and A. Stefanescu. Matching logic: a new program verification approach. In ICSE, 2011.
[45]
T. Rus, E. V. Wyk, and T. Halverson. Generating model checkers from algebraic specifications. Formal Methods in System Design, 20 (3), 2002.
[46]
A. Rybalchenko and V. Sofronie-Stokkermans. Constraint solving for interpolation. In VMCAI, 2007.
[47]
M. Sagiv. High Level Formalisms for Program Flow Analysis and their use in Compiling. PhD thesis, Technion, 1991.
[48]
T. Terauchi. Dependent types from counterexamples. In POPL, 2010.
[49]
S. L. Torre, P. Madhusudan, and G. Parlato. Analyzing recursive programs using a fixed-point calculus. In PLDI, 2009.
[50]
H. Unno and N. Kobayashi. Dependent type inference with interpolants. In PPDP, 2009.
[51]
J. Whaley and M. S. Lam. Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In PLDI, 2004.

Cited By

View all
  • (2024)CHC-COMP 2023: Competition ReportElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.402.10402(83-104)Online publication date: 23-Apr-2024
  • (2024)Refinement Type RefutationsProceedings of the ACM on Programming Languages10.1145/36897458:OOPSLA2(962-987)Online publication date: 8-Oct-2024
  • (2024)Commutativity Simplifies Proofs of Parameterized ProgramsProceedings of the ACM on Programming Languages10.1145/36329258:POPL(2485-2513)Online publication date: 5-Jan-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '12: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2012
572 pages
ISBN:9781450312059
DOI:10.1145/2254064
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 47, Issue 6
    PLDI '12
    June 2012
    534 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2345156
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 June 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. proof rules
  2. software model checking
  3. software verification
  4. verification tool synthesis

Qualifiers

  • Research-article

Conference

PLDI '12
Sponsor:

Acceptance Rates

PLDI '12 Paper Acceptance Rate 48 of 255 submissions, 19%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)63
  • Downloads (Last 6 weeks)5
Reflects downloads up to 05 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)CHC-COMP 2023: Competition ReportElectronic Proceedings in Theoretical Computer Science10.4204/EPTCS.402.10402(83-104)Online publication date: 23-Apr-2024
  • (2024)Refinement Type RefutationsProceedings of the ACM on Programming Languages10.1145/36897458:OOPSLA2(962-987)Online publication date: 8-Oct-2024
  • (2024)Commutativity Simplifies Proofs of Parameterized ProgramsProceedings of the ACM on Programming Languages10.1145/36329258:POPL(2485-2513)Online publication date: 5-Jan-2024
  • (2024)CHC-Based Verification of Programs Through Graph DecompositionsSN Computer Science10.1007/s42979-024-03371-65:8Online publication date: 18-Nov-2024
  • (2024)A lightweight approach to nontermination inference using Constrained Horn ClausesSoftware and Systems Modeling (SoSyM)10.1007/s10270-024-01161-523:2(319-342)Online publication date: 1-Apr-2024
  • (2024)Competition of Solvers for Constrained Horn Clauses (CHC-COMP 2023)TOOLympics Challenge 202310.1007/978-3-031-67695-6_2(38-51)Online publication date: 26-Apr-2024
  • (2024)Model Refinement: Generating Refinements for Algorithm and System DesignThe Practice of Formal Methods10.1007/978-3-031-66673-5_5(77-96)Online publication date: 4-Sep-2024
  • (2024)Deductive Model RefinementNASA Formal Methods10.1007/978-3-031-60698-4_9(147-165)Online publication date: 26-May-2024
  • (2024)An Exercise in Mind Reading: Automatic Contract Inference for Frama-CGuide to Software Verification with Frama-C10.1007/978-3-031-55608-1_13(553-582)Online publication date: 10-Jul-2024
  • (2023)Network Monitoring on Multi-Pipe SwitchesProceedings of the ACM on Measurement and Analysis of Computing Systems10.1145/35793217:1(1-31)Online publication date: 2-Mar-2023
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media