Synthesis of circular compositional program proofs via abduction

  • Isil Dillig
  • Thomas Dillig
  • Boyang Li
  • Ken McMillan
  • Mooly Sagiv
TACAS 2013


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.


Program verification Abductive inference Circular compositional reasoning 



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.


  1. 1.
    Cobleigh, J., Giannakopoulou, D., Păsăreanu, C.: Learning assumptions for compositional verification. TACAS, pp. 331–346 (2003)Google Scholar
  2. 2.
    Gupta, A., Mcmillan, K.L., Fu, Z.: Automated assumption generation for compositional verification. Form. Methods Syst Des (2008)Google Scholar
  3. 3.
    Calcagno, C., Distefano, D., O’Hearn, P., Yang, H.: Compositional shape analysis by means of bi-abduction. POPL 44(1), 289–300 (2009)Google Scholar
  4. 4.
    Peirce, C.: Collected papers of Charles sanders peirce. Belknap Press, Cambridge (1932)Google Scholar
  5. 5.
    Dillig, I., Dillig, T., McMillan, K., Aiken, A.: Minimum satisfying assignments for SMT, CAV (2012)Google Scholar
  6. 6.
    Dillig, I., Dillig, T., Aiken, A.: SAIL: Static analysis intermediate language. Stanford University Technical ReportGoogle Scholar
  7. 7.
    Dillig, I., Dillig, T., Aiken, A.: Cuts from proofs: a complete and practical technique for solving linear inequalities over integers. In: CAV. (2009)Google Scholar
  8. 8.
    Henzinger, T., Jhala, R., Majumdar, R., Sutre, G.: Software verification with BLAST. In: International conference on Model checking software, pp. 235–239 (2003)Google Scholar
  9. 9.
    Cousot, P., Halbwachs, N.: Automatic discovery of linear restraints among variables of a program. In: POPL, ACM, pp. 84–96 (1978)Google Scholar
  10. 10.
    Jeannet, B.: Interproc analyzer for recursive programs with numerical variables.
  11. 11.
    Granger, P.: Static analysis of linear congruence equalities among variables of a program. In: TAPSOFT’91, Springer, pp. 169–192 (1991)Google Scholar
  12. 12.
    Dillig, I., Dillig, T., Aiken, A.: Fluid updates: beyond strong vs. ESOP, weak updates. In (2010)Google Scholar
  13. 13.
    Dillig, I., Dillig, T., Aiken, A.: Precise reasoning for programs using containers. POPL (2011)Google Scholar
  14. 14.
    Cousot, P., Cousot, R.: Systematic design of program analysis frameworks. In: POPL, ACM, pp. 269–282 (1979)Google Scholar
  15. 15.
    McMillan, K.: Verification of infinite state systems by compositional model checking. Correct Hardware Design and Verification Methods, pp. 705–705 (1999)Google Scholar
  16. 16.
    Gulwani, S., Tiwari, A.: Combining abstract interpreters. In: ACM SIGPLAN Notices, ACM, vol. 41, pp 376–386 (2006)Google Scholar
  17. 17.
    Charlton, N., Huth, M.: Hector: Software model checking with cooperating analysis plugins. In: Computer Aided Verification, Springer, pp. 168–172 (2007)Google Scholar
  18. 18.
    Gulwani, S., McCloskey, B., Tiwari, A.: Lifting abstract interpreters to quantified logical domains. In: POPL, ACM, pp. 235–246 (2008)Google Scholar
  19. 19.
    Giacobazzi, R.: Abductive analysis of modular logic programs. In: Proceedings of the 1994 International Symposium on Logic programming, Citeseer, pp. 377–391 (1994)Google Scholar
  20. 20.
    Dillig, I., Dillig, T., Aiken, A.: Automated error diagnosis using abductive inference. In: PLDI (2012)Google Scholar
  21. 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)Google Scholar
  22. 22.
    Alrajeh, D., Ray, O., Russo, A., Uchitel, S.: Using abduction and induction for operational requirements elaboration. In: Journal of Applied Logic (2009)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2015

Authors and Affiliations

  • Isil Dillig
    • 1
  • Thomas Dillig
    • 1
  • Boyang Li
    • 2
  • Ken McMillan
    • 3
  • Mooly Sagiv
    • 4
  1. 1.UT AustinAustinUSA
  2. 2.College of William and MaryWilliamsburgUSA
  3. 3.Microsoft ResearchRedmondUSA
  4. 4.Tel Aviv UniversityTel AvivIsrael

Personalised recommendations