AutoProof: Auto-Active Functional Verification of Object-Oriented Programs

  • Julian Tschannen
  • Carlo A. Furia
  • Martin Nordio
  • Nadia Polikarpova
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9035)

Abstract

Auto-active verifiers provide a level of automation intermediate between fully automatic and interactive: users supply code with annotations as input while benefiting from a high level of automation in the back-end. This paper presents AutoProof, a state-of-the-art auto-active verifier for object-oriented sequential programs with complex functional specifications. AutoProof fully supports advanced object-oriented features and a powerful methodology for framing and class invariants, which make it applicable in practice to idiomatic objectoriented patterns. The paper focuses on describing AutoProof’s interface, design, and implementation features, and demonstrates AutoProof’s performance on a rich collection of benchmark problems. The results attest AutoProof’s competitiveness among tools in its league on cutting-edge functional verification of object-oriented programs.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Barnett, M., Fähndrich, M., Leino, K.R.M., Müller, P., Schulte, W., Venter, H.: Specification and verification: the Spec# experience. Commun. ACM 54(6), 81–91 (2011), http://specsharp.codeplex.com/ CrossRefGoogle Scholar
  2. 2.
    Barnett, M., Naumann, D.A.: Friends need a bit more: Maintaining invariants over shared state. In: Kozen, D. (ed.) MPC 2004. LNCS, vol. 3125, pp. 54–84. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  3. 3.
    Beckert, B., Hähnle, R., Schmitt, P.H. (eds.): Verification of Object-Oriented Software. LNCS (LNAI), vol. 4334. Springer, Heidelberg (2007)Google Scholar
  4. 4.
    Bormer, T., et al.: The COST IC0701 verification competition 2011. In: Beckert, B., Damiani, F., Gurov, D. (eds.) FoVeOOS 2011. LNCS, vol. 7421, pp. 3–21. Springer, Heidelberg (2012), http://foveoos2011.cost-ic0701.org/verification-competition CrossRefGoogle Scholar
  5. 5.
    Chalin, P., Kiniry, J.R., Leavens, G.T., Poll, E.: Beyond assertions: Advanced specification and verification with JML and eSC/Java2. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 342–363. Springer, Heidelberg (2006), http://kindsoftware.com/products/opensource/ESCJava2/ CrossRefGoogle Scholar
  6. 6.
    Cohen, E., Dahlweid, M., Hillebrand, M.A., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., Tobies, S.: VCC: a practical system for verifying concurrent C. In: Berghofer, S., Nipkow, T., Urban, C., Wenzel, M. (eds.) TPHOLs 2009. LNCS, vol. 5674, pp. 23–42. Springer, Heidelberg (2009), http://vcc.codeplex.com/ CrossRefGoogle Scholar
  7. 7.
    Cok, D.: The OpenJML toolset. In: NASA Formal Methods, vol. 6617 (2011)Google Scholar
  8. 8.
    Dijkstra, E.W.: A Discipline of Programming. Prentice Hall (1976)Google Scholar
  9. 9.
    EiffelBase2: A fully verified container library (2015), https://github.com/nadia-polikarpova/eiffelbase2
  10. 10.
    Filliâtre, J.-C., Marché, C.: The Why/Krakatoa/Caduceus platform for deductive program verification. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 173–177. Springer, Heidelberg (2007), http://krakatoa.lri.fr/ CrossRefGoogle Scholar
  11. 11.
    Filliâtre, J.-C., Paskevich, A.: Why3 – where programs meet provers. In: Felleisen, M., Gardner, P. (eds.) ESOP 2013. LNCS, vol. 7792, pp. 125–128. Springer, Heidelberg (2013), http://why3.lri.fr/ CrossRefGoogle Scholar
  12. 12.
    Filliâtre, J.-C., Paskevich, A., Stump, A.: The 2nd verified software competition: Experience report. In: COMPARE. CEUR Workshop Proceedings, vol. 873, CEUR-WS.org (2012), https://sites.google.com/site/vstte2012/compet
  13. 13.
    Furia, C.A.: Rotation of sequences: Algorithms and proofs (June 2014), http://arxiv.org/abs/1406.5453
  14. 14.
    Huisman, M., Klebanov, V., Monahan, R.: VerifyThis verification competition (2012), http://verifythis2012.cost-ic0701.org
  15. 15.
    Jacobs, B., Smans, J., Piessens, F.: A quick tour of the VeriFast program verifier. In: Ueda, K. (ed.) APLAS 2010. LNCS, vol. 6461, pp. 304–311. Springer, Heidelberg (2010), http://people.cs.kuleuven.be/~bart.jacobs/verifast/ CrossRefGoogle Scholar
  16. 16.
    Kiniry, J.R., Morkan, A.E., Cochran, D., Fairmichael, F., Chalin, P., Oostdijk, M., Hubbers, E.: The KOA remote voting system: A summary of work to date. In: Montanari, U., Sannella, D., Bruni, R. (eds.) TGC 2006. LNCS, vol. 4661, pp. 244–262. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  17. 17.
    Klebanov, V., et al.: The 1st verified software competition: Experience report. In: Butler, M., Schulte, W. (eds.) FM 2011. LNCS, vol. 6664, pp. 154–168. Springer, Heidelberg (2011), https://sites.google.com/a/vscomp.org/main/ CrossRefGoogle Scholar
  18. 18.
    Leavens, G.T., Cheon, Y., Clifton, C., Ruby, C., Cok, D.R.: How the design of JML accommodates both runtime assertion checking and formal verification. Sci. Comput. Program. 55(1-3), 185–208 (2005)CrossRefMATHMathSciNetGoogle Scholar
  19. 19.
    Leavens, G.T., Leino, K.R.M., Müller, P.: Specification and verification challenges for sequential object-oriented programs. Formal Aspects of Computing 19(2), 159–189 (2007)CrossRefMATHGoogle Scholar
  20. 20.
    Leino, K.R.M.: This is boogie 2. Technical report, Microsoft Research (June 2008), http://research.microsoft.com/apps/pubs/default.aspx?id=147643
  21. 21.
    Leino, K.R.M.: Dafny: An automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR-16 2010. LNCS, vol. 6355, pp. 348–370. Springer, Heidelberg (2010), http://research.microsoft.com/en-us/projects/dafny/ CrossRefGoogle Scholar
  22. 22.
    Leino, K.R.M., Moskal, M.: Usable auto-active verification. In: Usable Verification Workshop (November 2010), http://fm.csl.sri.com/UV10/
  23. 23.
    Leino, K.R. M., Müller, P.: Object invariants in dynamic contexts. In: Odersky, M. (ed.) ECOOP 2004. LNCS, vol. 3086, pp. 491–515. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  24. 24.
    Logozzo, F.: Our experience with the CodeContracts static checker. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 241–242. Springer, Heidelberg (2012), http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx CrossRefGoogle Scholar
  25. 25.
    The OpenJML toolset (2013), http://openjml.org/
  26. 26.
    Polikarpova, N., Furia, C.A., Meyer, B.: Specifying reusable components. In: Leavens, G.T., O’Hearn, P., Rajamani, S.K. (eds.) VSTTE 2010. LNCS, vol. 6217, pp. 127–141. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  27. 27.
    Polikarpova, N., Tschannen, J., Furia, C.A., Meyer, B.: Flexible invariants through semantic collaboration. In: Jones, C., Pihlajasaari, P., Sun, J. (eds.) FM 2014. LNCS, vol. 8442, pp. 514–530. Springer, Heidelberg (2014)CrossRefGoogle Scholar
  28. 28.
    SAVCBS workshop series (2010), http://www.eecs.ucf.edu/~leavens/SAVCBS/
  29. 29.
    Summers, J., Drossopoulou, S., Müller, P.: The need for flexible object invariants. In: IWACO, pp. 1–9. ACM (2009)Google Scholar
  30. 30.
    Suter, P., Köksal, A.S., Kuncak, V.: Satisfiability modulo recursive programs. In: Yahav, E. (ed.) Static Analysis. LNCS, vol. 6887, pp. 298–315. Springer, Heidelberg (2011), http://leon.epfl.ch/ CrossRefGoogle Scholar
  31. 31.
    Tschannen, J., Furia, C.A., Nordio, M.: AutoProof meets some verification challenges. International Journal on Software Tools for Technology Transfer, 1–11 (February 2014)Google Scholar
  32. 32.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Usable verification of object-oriented programs by combining static and dynamic techniques. In: Barthe, G., Pardo, A., Schneider, G. (eds.) SEFM 2011. LNCS, vol. 7041, pp. 382–398. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  33. 33.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Automatic verification of advanced object-oriented features: The AutoProof approach. In: Meyer, B., Nordio, M. (eds.) LASER 2011. LNCS, vol. 7682, pp. 133–155. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  34. 34.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Program checking with less hassle. In: Cohen, E., Rybalchenko, A. (eds.) VSTTE 2013. LNCS, vol. 8164, pp. 149–169. Springer, Heidelberg (2014)CrossRefGoogle Scholar
  35. 35.
    Tschannen, J., Furia, C.A., Nordio, M., Polikarpova, N.: AutoProof: Auto-active functional verification of object-oriented programs (2015), http://arxiv.org/abs/1501.03063
  36. 36.
    Weide, B.W., Sitaraman, M., Harton, H.K., Adcock, B., Bucci, P., Bronish, D., Heym, W.D., Kirschenbaum, J., Frazier, D.: Incremental benchmarks for software verification tools and techniques. In: Shankar, N., Woodcock, J. (eds.) VSTTE 2008. LNCS, vol. 5295, pp. 84–98. Springer, Heidelberg (2008)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2015

Authors and Affiliations

  • Julian Tschannen
    • 1
  • Carlo A. Furia
    • 1
  • Martin Nordio
    • 1
  • Nadia Polikarpova
    • 1
  1. 1.Chair of Software Engineering, Department of Computer ScienceETH ZurichZurichSwitzerland

Personalised recommendations