Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/3155562.3155661guideproceedingsArticle/Chapter ViewAbstractPublication PagesaseConference Proceedingsconference-collections
Article
Free access

FiB: squeezing loop invariants by interpolation between Forward/Backward predicate transformers

Published: 30 October 2017 Publication History

Abstract

Loop invariant generation is a fundamental problem in program analysis and verification. In this work, we propose a new approach to automatically constructing inductive loop invariants. The key idea is to aggressively squeeze an inductive invariant based on Craig interpolants between forward and backward reachability analysis. We have evaluated our approach by a set of loop benchmarks, and experimental results show that our approach is promising.

References

[1]
https://github.com/spencerxiao/ase2017-results-and-tools.
[2]
https://z3.codeplex.com/.
[3]
A. Albarghouthi and K. L. McMillan. Beautiful interpolants. In CAV, volume 8044 of LNCS, pages 313–329, 2013.
[4]
T. Ball and S. Rajamani. The SLAM toolkit. In CAV, volume 2102 of LNCS, pages 260–264, 2001.
[5]
D. Beyer, T. A. Henzinger, R. Majumdar, and A. Rybalchenko. Path invariants. In PLDI, volume 42, pages 300–309, 2007.
[6]
D. Beyer and M. E. Keremoglu. CPAchecker: A tool for configurable software verification. In CAV, pages 184–190, 2011.
[7]
A. Bradley. Understanding IC3. In Theory and Applications of Satisfiability Testing, volume 7317 of LNCS, pages 1–14, 2012.
[8]
C. Calcagno, D. Distefano, P. O’Hearn, and H. Yang. Compositional shape analysis by means of bi-abduction. In POPL, pages 289–300, 2009.
[9]
C. Calcagno, D. Distefano, and V. Vafeiadis. Bi-abductive resource invariant synthesis. In Programming Languages and Systems (APLAS), volume 5904 of LNCS, pages 259–274, 2009.
[10]
E. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexampleguided abstraction refinement for symbolic model checking. Journal of the ACM, 50(5):752–794, 2003.
[11]
E. M. Clarke, O. Grumberg, and D. A. Peled. Model Checking. MIT Press, 1999.
[12]
M. Col´on, S. Sankaranarayanan, and H. Sipma. Linear invariant generation using non-linear constraint solving. In CAV, volume 2725 of LNCS, pages 420–432, 2003.
[13]
P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In POPL, pages 269–282, 1979.
[14]
P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In POPL, pages 84–96, 1978.
[15]
W. Craig. Three uses of the herbrand-gentzen theorem in relating model theory and proof theory. The Journal of Symbolic Logic, 22(3):269–285, 1957.
[16]
E. W. Dijkstra and C. S. Scholten. Predicate calculus and program semantics. Texts and Monographs in Computer Science, 1990.
[17]
I. Dillig, T. Dillig, B. Li, and K. McMillan. Inductive invariant generation via abductive inference. In OOPSLA, volume 48, pages 443– 456, 2013.
[18]
M. Ernst, J. Perkins, P. Guo, S. McCamant, C. Pacheco, M. Tschantz, and C. Xiao. The Daikon system for dynamic detection of likely invariants. Science of Computer Programming, 69(1–3):35–45, 2007.
[19]
C. Flanagan and K. Leino. Houdini, an annotation assistant for ESC/Java. In International Symposium of Formal Methods Europe on Formal Methods for Increasing Software Productivity (FME), pages 500–517, 2001.
[20]
R. W. Floyd. Assigning meanings to programs. In Applied Math, volume XIX, pages 19–32, 1967.
[21]
P. Garg, C. Löding, P. Madhusudan, and D. Neider. Ice: A robust framework for learning invariants. In CAV, pages 69–87, 2014.
[22]
P. Garg, D. Neider, P. Madhusudan, and D. Roth. Learning invariants using decision trees and implication counterexamples. In POPL, volume 51, pages 499–512, 2016.
[23]
R. Giacobazzi. Abductive analysis of modular logic programs. In International Symposium on Logic Programming, pages 377–391, 1994.
[24]
B. Gulavani and S. Rajamani. Counterexample driven refinement for abstract interpretation. In TACAS, pages 474–488, 2006.
[25]
S. Gulwani, B. McCloskey, and A. Tiwari. Lifting abstract interpreters to quantified logical domains. In POPL, pages 235–246, 2008.
[26]
S. Gulwani, S. Srivastava, and R. Venkatesan. Program analysis as constraint solving. In PLDI, volume 43, pages 281–292, 2008.
[27]
S. Gulwani, S. Srivastava, and R. Venkatesan. Constraint-based invariant inference over predicate abstraction. In Verification, Model Checking, and Abstract Interpretation, volume 5403 of LNCS, pages 120–135, 2009.
[28]
A. Gupta and A. Rybalchenko. InvGen: An efficient invariant generator. In CAV, volume 5643 of LNCS, pages 634–640, 2009.
[29]
T. Henzinger, R. Jhala, R. Majumdar, and K. McMillan. Abstractions from proofs. In POPL, pages 232–244, 2004.
[30]
T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Software verification with BLAST. In International Conference on Model Checking Software (SPIN), volume 5403 of LNCS, pages 235–239, 2003.
[31]
C. A. R. Hoare. An axiomatic basis for computer programming. Communications of the ACM, 12(10):576–580, 1969.
[32]
B. Jeannet. Interproc analyzer for recursive programs with numerical variables.
[33]
R. Jhala and K. McMillan. A practical and complete approach to predicate refinement. In TACAS, pages 459–473, 2006.
[34]
M. Karr. Affine relationships among variables of a program. Acta Informatica, 6(2):133–151, 1976.
[35]
V. Laviron and F. Logozzo. Subpolyhedra: A (more) scalable approach to infer linear inequalities. In Verification, Model Checking, and Abstract Interpretation, volume 5403 of LNCS, pages 229–244, 2009.
[36]
W. Lee, Y. Jung, B.-Y. Wang, and K. Yi. Predicate generation for learning-based quantifier-free loop invariant inference. Logical Methods in Computer Science, 8(3):1–21, 2012.
[37]
S.-W. Lin, J. Sun, T. K. Nguyen, Y. Liu, and J. S. Dong. Interpolation guided compositional verification. In ASE, pages 65–74, 2015.
[38]
K. McMillan. Interpolation and SAT-based model checking. In CAV, volume 2725 of LNCS, pages 1–13, 2003.
[39]
K. McMillan. Lazy abstraction with interpolants. In CAV, volume 4144 of LNCS, pages 123–136, 2006.
[40]
K. McMillan. Lazy annotation for program testing and verification. In CAV, volume 6174 of LNCS, pages 104–118, 2010.
[41]
A. Miné. The octagon abstract domain. Higher-Order and Symbolic Computation, 19(1):31–100, 2006.
[42]
C. Peirce. Collected Papers of Charles Sanders Peirce. Belknap Press, 1932.
[43]
R. Rebiha, A. V. Moura, and N. Matringe. Generating invariants for nonlinear loops by linear algebraic methods. Formal Aspects of Computing, 27(5):805–829, 2015.
[44]
E. Rodr´ıguez-Carbonell and D. Kapur. Automatic generation of polynomial invariants of bounded degree using abstract interpretation. Science of Computer Programming, 64(1):54–75, 2007.
[45]
S. Sankaranarayanan, H. B. Sipma, and Z. Manna. Non-linear loop invariant generation using gröbner bases. In POPL, pages 318–329, 2004.
[46]
R. Sharma and A. Aiken. From invariant checking to invariant inference using randomized search. In CAV, volume 8559 of LNCS, pages 88–105, 2014.
[47]
R. Sharma, S. Gupta, B. Hariharan, A. Aiken, P. Liang, and A. V. Nori. A data driven approach for algebraic loop invariants. In Programming Languages and Systems, volume 7792 of LNCS, pages 574–592, 2013.
[48]
R. Sharma, S. Gupta, B. Hariharan, A. Aiken, and A. V. Nori. Verification as learning geometric concepts. In Static Analysis, volume 7935 of LNCS, pages 388–411, 2013.
[49]
Y. Vizel, O. Grumberg, and S. Shoham. Intertwined forward-backward reachability analysis using interpolants. In TACAS, pages 308–323, 2013.
[50]
G. Winskel. The Formal Semantics of Programming Languages: An Introduction. MIT Press, 1993.

Cited By

View all
  • (2020)Interval counterexamples for loop invariant learningProceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3368089.3409752(111-122)Online publication date: 8-Nov-2020

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
ASE '17: Proceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering
October 2017
1033 pages
ISBN:9781538626849

Sponsors

Publisher

IEEE Press

Publication History

Published: 30 October 2017

Author Tags

  1. Interpolation
  2. Loop Invariant Generation

Qualifiers

  • Article

Acceptance Rates

Overall Acceptance Rate 82 of 337 submissions, 24%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)69
  • Downloads (Last 6 weeks)9
Reflects downloads up to 01 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Interval counterexamples for loop invariant learningProceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3368089.3409752(111-122)Online publication date: 8-Nov-2020

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media