Skip to main content

Advertisement

Log in

Synthesis of circular compositional program proofs via abduction

  • TACAS 2013
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

Abstract

This paper presents a new technique for synthesizing circular compositional proofs of program correctness. Our technique uses abductive inference to decompose the proof into small lemmas (i.e., compositionality) and proves that each lemma is not the first one to fail (i.e., circularity). Our approach represents lemmas as small program fragments annotated with pre and post-conditions and uses different tools to discharge each different lemma. This approach allows us to combine the strengths of different verifiers and addresses scalability concerns, as each lemma concerns the correctness of small syntactic fragments of the program. We have implemented our proposed technique for generating circular compositional proofs and used four different program analysis tools to discharge the proof subgoals. We evaluate our approach on a collection of synthetic and real-world benchmarks and show that our technique can successfully verify applications that cannot be verified by any individual technique.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4

Similar content being viewed by others

References

  1. Cobleigh, J., Giannakopoulou, D., Păsăreanu, C.: Learning assumptions for compositional verification. TACAS, pp. 331–346 (2003)

  2. Gupta, A., Mcmillan, K.L., Fu, Z.: Automated assumption generation for compositional verification. Form. Methods Syst Des (2008)

  3. Calcagno, C., Distefano, D., O’Hearn, P., Yang, H.: Compositional shape analysis by means of bi-abduction. POPL 44(1), 289–300 (2009)

  4. Peirce, C.: Collected papers of Charles sanders peirce. Belknap Press, Cambridge (1932)

    Google Scholar 

  5. Dillig, I., Dillig, T., McMillan, K., Aiken, A.: Minimum satisfying assignments for SMT, CAV (2012)

  6. Dillig, I., Dillig, T., Aiken, A.: SAIL: Static analysis intermediate language. Stanford University Technical Report

  7. Dillig, I., Dillig, T., Aiken, A.: Cuts from proofs: a complete and practical technique for solving linear inequalities over integers. In: CAV. (2009)

  8. Henzinger, T., Jhala, R., Majumdar, R., Sutre, G.: Software verification with BLAST. In: International conference on Model checking software, pp. 235–239 (2003)

  9. Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: POPL, ACM, pp. 84–96 (1978)

  10. Jeannet, B.: Interproc analyzer for recursive programs with numerical variables. http://pop-art.inrialpes.fr/interproc/interprocweb.cgi

  11. Granger, P.: Static analysis of linear congruence equalities among variables of a program. In: TAPSOFT’91, Springer, pp. 169–192 (1991)

  12. Dillig, I., Dillig, T., Aiken, A.: Fluid updates: beyond strong vs. ESOP, weak updates. In (2010)

  13. Dillig, I., Dillig, T., Aiken, A.: Precise reasoning for programs using containers. POPL (2011)

  14. Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: POPL, ACM, pp. 269–282 (1979)

  15. McMillan, K.: Verification of infinite state systems by compositional model checking. Correct Hardware Design and Verification Methods, pp. 705–705 (1999)

  16. Gulwani, S., Tiwari, A.: Combining abstract interpreters. In: ACM SIGPLAN Notices, ACM, vol. 41, pp 376–386 (2006)

  17. Charlton, N., Huth, M.: Hector: Software model checking with cooperating analysis plugins. In: Computer Aided Verification, Springer, pp. 168–172 (2007)

  18. Gulwani, S., McCloskey, B., Tiwari, A.: Lifting abstract interpreters to quantified logical domains. In: POPL, ACM, pp. 235–246 (2008)

  19. Giacobazzi, R.: Abductive analysis of modular logic programs. In: Proceedings of the 1994 International Symposium on Logic programming, Citeseer, pp. 377–391 (1994)

  20. Dillig, I., Dillig, T., Aiken, A.: Automated error diagnosis using abductive inference. In: PLDI (2012)

  21. Dillig, I., Dillig, T., Aiken, A.: Small formulas for large programs: on-line constraint simplification for scalable static analysis. In: Static Analysis Symposium (2010)

  22. Alrajeh, D., Ray, O., Russo, A., Uchitel, S.: Using abduction and induction for operational requirements elaboration. In: Journal of Applied Logic (2009)

Download references

Acknowledgments

We would like to thank Hongseok Yang, Aaron Bradley, Peter O’Hearn, Noam Rinetzky, and the anonymous reviewers of TACAS’13 and STTT’15 for their helpful feedback.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Isil Dillig.

Additional information

This work is supported in part by NSF CAREER Award 1453386 and DARPA #FA8750-12-2-0020.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Dillig, I., Dillig, T., Li, B. et al. Synthesis of circular compositional program proofs via abduction. Int J Softw Tools Technol Transfer 19, 535–547 (2017). https://doi.org/10.1007/s10009-015-0397-7

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-015-0397-7

Keywords

Navigation