Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2509136.2509511acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Inductive invariant generation via abductive inference

Published: 29 October 2013 Publication History

Abstract

This paper presents a new method for generating inductive loop invariants that are expressible as boolean combinations of linear integer constraints. The key idea underlying our technique is to perform a backtracking search that combines Hoare-style verification condition generation with a logical abduction procedure based on quantifier elimination to speculate candidate invariants. Starting with true, our method iteratively strengthens loop invariants until they are inductive and strong enough to verify the program. A key feature of our technique is that it is lazy: It only infers those invariants that are necessary for verifying program correctness. Furthermore, our technique can infer arbitrary boolean combinations (including disjunctions) of linear invariants. We have implemented the proposed approach in a tool called HOLA. Our experiments demonstrate that HOLA can infer interesting invariants that are beyond the reach of existing state-of-the-art invariant generation tools.

References

[1]
Cousot, P., Halbwachs, N.: Automatic Discovery of Linear Restraints among Variables of a Program. In: POPL, ACM (1978) 84--96.
[2]
Miné, A.: The octagon abstract domain. Higher-Order and Symbolic Computation 19(1) (2006) 31--100.
[3]
Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: POPL, ACM (1979) 269--282.
[4]
Karr, M.: Affine relationships among variables of a program. A. I. (1976) 133--151.
[5]
Gupta, A., Rybalchenko, A.: Invgen: An efficient invariant generator. In: Computer Aided Verification, Springer (2009) 634--640.
[6]
Colón, M., Sankaranarayanan, S., Sipma, H.: Linear invariant generation using non-linear constraint solving. In: Computer Aided Verification, Springer (2003) 420--432.
[7]
Henzinger, T., Jhala, R., Majumdar, R., Sutre, G.: Software verification with BLAST. In: International conference on Model checking software. (2003) 235--239.
[8]
Ball, T., Rajamani, S.: The slam toolkit. In: Computer aided verification, Springer (2001) 260--264.
[9]
McMillan, K.: Lazy annotation for program testing and verification. In: Computer Aided Verification, Springer (2010) 104--118.
[10]
Henzinger, T., Jhala, R., Majumdar, R., McMillan, K.: Abstractions from proofs. ACM SIGPLAN Notices 39(1) (2004) 232--244.
[11]
McMillan, K.: Interpolation and sat-based model checking. In: Computer Aided Verification, Springer (2003) 1--13.
[12]
Flanagan, C., Leino, K. R. M., Lillibridge, M., Nelson, G., Saxe, J. B., Stata, R.: Extended static checking for java. In: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation. PLDI '02, New York, NY, USA, ACM (2002) 234--245.
[13]
Leino, K.: Dafny: An automatic program verifier for functional correctness. In: Logic for Programming, Artificial Intelligence, and Reasoning, Springer (2010) 348--370.
[14]
Barnett, M., yuh Evan Chang, B., Deline, R., Jacobs, B., Leino, K. R.: Boogie: A modular reusable verifier for object-oriented programs. In: Formal Methods for Components and Objects: 4th International Symposium, FMCO 2005, volume 4111 of Lecture Notes in Computer Science, Springer (2006) 364--387.
[15]
Peirce, C.: Collected papers of Charles Sanders Peirce. Belknap Press (1932).
[16]
Dillig, I., Dillig, T., McMillan, K., Aiken, A.: Minimum satisfying assignments for SMT, CAV (2012).
[17]
Cooper, D.: Theorem proving in arithmetic without multiplication. Machine Intelligence 7(91-99) (1972) 300.
[18]
Dillig, I., Dillig, T., Aiken, A.: SAIL: Static Analysis Intermediate Language. Stanford University Technical Report.
[19]
Dillig, I., Dillig, T., Aiken, A.: Small formulas for large programs: On-line constraint simplification in scalable static analysis. SAS (2011).
[20]
Dillig, I., Dillig, T., Aiken, A.: Cuts from Proofs: A Complete and Practical Technique for Solving Linear Inequalities over Integers. In: CAV. (2009).
[21]
Jeannet, B.: Interproc analyzer for recursive programs with numerical variables. http://pop-art.inrialpes.fr/interproc/interprocweb.cgi.
[22]
Bradley, A.: Understanding IC3. Theory and Applications of Satisfiability Testing - SAT 2012 (2012) 1--14.
[23]
Gulwani, S., Srivastava, S., Venkatesan, R.: Program analysis as constraint solving. In: PLDI. Volume 43., ACM (2008) 281--292.
[24]
Jhala, R., McMillan, K.: A practical and complete approach to predicate refinement. Tools and Algorithms for the Construction and Analysis of Systems (2006) 459--473.
[25]
Sharma, R., Nori, A., Aiken, A.: Interpolants as classifiers. In: Computer Aided Verification, Springer (2012) 71--87.
[26]
Gulavani, B., Rajamani, S.: Counterexample driven refinement for abstract interpretation. Tools and Algorithms for the Construction and Analysis of Systems (2006) 474--488.
[27]
Gulwani, S., Jojic, N.: Program verification as probabilistic inference. In: ACM SIGPLAN Notices. Volume 42., ACM (2007) 277--289.
[28]
Gulavani, B., Chakraborty, S., Nori, A., Rajamani, S.: Automatically refining abstract interpretations. TACAS (2008) 443--458.
[29]
Beyer, D., Henzinger, T. A., Majumdar, R., Rybalchenko, A.: Path invariants. In: Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation. PLDI '07, New York, NY, USA, ACM (2007) 300--309.
[30]
Bradley, A. R., Manna, Z.: Property-directed incremental invariant generation. Form. Asp. Comput. 20(4-5) (June 2008) 379--405.
[31]
Gulavani, B. S., Henzinger, T. A., Kannan, Y., Nori, A. V., Rajamani, S. K.: Synergy: a new algorithm for property checking. In: Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering. SIGSOFT '06/FSE-14, New York, NY, USA, ACM (2006) 117--127.
[32]
http://pub.ist.ac.at/agupta/invgen/: InvGen tool.
[33]
http://www.nec-labs.com/research/system/systems_SAV-website/benchmarks.php: NECLABS NECLA verification benchmarks.
[34]
Laviron, V., Logozzo, F.: Subpolyhedra: A (more) scalable approach to infer linear inequalities. In: Verification, Model Checking, and Abstract Interpretation, Springer (2009) 229--244.
[35]
Clarke, E., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided abstraction refinement for symbolic model checking. J. ACM 50(5) (September 2003) 752--794.
[36]
Gulwani, S., Srivastava, S., Venkatesan, R.: Constraint-based invariant inference over predicate abstraction. In: Verification, Model Checking, and Abstract Interpretation, Springer (2009) 120--135.
[37]
Flanagan, C., Leino, K.: Houdini, an annotation assistant for esc/java. FME 2001: Formal Methods for Increasing Software Productivity (2001) 500--517.
[38]
Ernst, M., Perkins, J., Guo, P., McCamant, S., Pacheco, C., Tschantz, M., Xiao, C.: The Daikon system for dynamic detection of likely invariants. Science of Computer Programming 69(1-3) (2007) 35--45.
[39]
McMillan, K.: Lazy abstraction with interpolants. In: Computer Aided Verification, Springer (2006) 123--136.
[40]
Păsăreanu, C. S., Visser, W.: Verification of java programs using symbolic execution and invariant generation. In: SPIN Workshop on Model Checking Software. Springer (2004) 164--181.
[41]
Bradley, A.: Sat-based model checking without unrolling. In: Verification, Model Checking, and Abstract Interpretation, Springer (2011) 70--87.
[42]
Somenzi, F., Bradley, A.: IC3: where monolithic and incremental meet. In: Proceedings of the International Conference on Formal Methods in Computer-Aided Design, FMCAD Inc (2011) 3--8.
[43]
Calcagno, C., Distefano, D., O'Hearn, P., Yang, H.: Compositional shape analysis by means of bi-abduction. POPL 44(1) (2009) 289--300.
[44]
Giacobazzi, R.: Abductive analysis of modular logic programs. In: Proceedings of the 1994 International Symposium on Logic programming, Citeseer (1994) 377--391.
[45]
Gulwani, S., McCloskey, B., Tiwari, A.: Lifting abstract interpreters to quantified logical domains. In: POPL, ACM (2008) 235--246.
[46]
Calcagno, C., Distefano, D., Vafeiadis, V.: Bi-abductive resource invariant synthesis. In: Proceedings of the 7th Asian Symposium on Programming Languages and Systems. APLAS '09, Berlin, Heidelberg, Springer-Verlag (2009) 259--274.
[47]
Dillig, I., Dillig, T., Aiken, A.: Automated error diagnosis using abductive inference. In: Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation. PLDI '12, New York, NY, USA, ACM (2012) 181--192.
[48]
Li, B., Dillig, I., Dillig, T.,McMillan, K., Sagiv, M.: Synthesis of circular compositional program proofs via abduction. In: Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems. TACAS'13, Springer-Verlag (2013) 370--384.
[49]
Gulwani, S., Musuvathi, M.: Cover Algorithms. In: ESOP. (2008) 193--207.

Cited By

View all
  • (2024)Automating Unrealizability Logic: Hoare-Style Proof Synthesis for Infinite Sets of ProgramsProceedings of the ACM on Programming Languages10.1145/36897158:OOPSLA2(113-139)Online publication date: 8-Oct-2024
  • (2024)From Batch to Stream: Automatic Generation of Online AlgorithmsProceedings of the ACM on Programming Languages10.1145/36564188:PLDI(1014-1039)Online publication date: 20-Jun-2024
  • (2024)Inference of Robust Reachability ConstraintsProceedings of the ACM on Programming Languages10.1145/36329338:POPL(2731-2760)Online publication date: 5-Jan-2024
  • Show More Cited By

Index Terms

  1. Inductive invariant generation via abductive inference

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Conferences
      OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
      October 2013
      904 pages
      ISBN:9781450323741
      DOI:10.1145/2509136
      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: 29 October 2013

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. abductive inference
      2. invariant generation
      3. static analysis

      Qualifiers

      • Research-article

      Conference

      SPLASH '13
      Sponsor:

      Acceptance Rates

      OOPSLA '13 Paper Acceptance Rate 50 of 189 submissions, 26%;
      Overall Acceptance Rate 268 of 1,244 submissions, 22%

      Upcoming Conference

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)79
      • Downloads (Last 6 weeks)13
      Reflects downloads up to 09 Nov 2024

      Other Metrics

      Citations

      Cited By

      View all
      • (2024)Automating Unrealizability Logic: Hoare-Style Proof Synthesis for Infinite Sets of ProgramsProceedings of the ACM on Programming Languages10.1145/36897158:OOPSLA2(113-139)Online publication date: 8-Oct-2024
      • (2024)From Batch to Stream: Automatic Generation of Online AlgorithmsProceedings of the ACM on Programming Languages10.1145/36564188:PLDI(1014-1039)Online publication date: 20-Jun-2024
      • (2024)Inference of Robust Reachability ConstraintsProceedings of the ACM on Programming Languages10.1145/36329338:POPL(2731-2760)Online publication date: 5-Jan-2024
      • (2024)Semantic Code Refactoring for Abstract Data TypesProceedings of the ACM on Programming Languages10.1145/36328708:POPL(816-847)Online publication date: 5-Jan-2024
      • (2024)Enchanting Program Specification Synthesis by Large Language Models Using Static Analysis and Program VerificationComputer Aided Verification10.1007/978-3-031-65630-9_16(302-328)Online publication date: 25-Jul-2024
      • (2023)Loop Invariant Inference through SMT Solving Enhanced Reinforcement LearningProceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3597926.3598047(175-187)Online publication date: 12-Jul-2023
      • (2023)Demystifying Template-Based Invariant Generation for Bit-Vector Programs2023 38th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE56229.2023.00069(673-685)Online publication date: 11-Sep-2023
      • (2023)Generalized Program Sketching by Abstract Interpretation and Logical AbductionStatic Analysis10.1007/978-3-031-44245-2_11(212-230)Online publication date: 22-Oct-2023
      • (2022)Grammar Inference for Ad Hoc ParsersCompanion Proceedings of the 2022 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3563768.3565550(38-42)Online publication date: 29-Nov-2022
      • (2022)Scalable linear invariant generation with Farkas’ lemmaProceedings of the ACM on Programming Languages10.1145/35632956:OOPSLA2(204-232)Online publication date: 31-Oct-2022
      • Show More Cited By

      View Options

      Get Access

      Login options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media