AutoProof meets some verification challenges

  • Julian TschannenEmail author
  • Carlo A. Furia
  • Martin Nordio
VerifyThis 2012


AutoProof is an automatic verifier for functional properties of programs written in Eiffel. This paper illustrates some of AutoProof’s capabilities when tackling the three challenges of the VerifyThis verification competition held at FM 2012, as well as on three other problems proposed in related events. AutoProof ’s design focuses on making it practically applicable with reduced user effort. Tackling the challenges demonstrates to what extent this design goal is met in the current implementation: while some of AutoProof’s current limitations prevent us from verifying the complete specification of the prefix sum and binary search tree algorithms, we can still prove some partial properties on interesting special cases, but with the advantage of requiring little or no specification.


Automated Program verification Verification challenges Experience report Eiffel Functional correctness 



Work partially supported by SNF grants LSAT/200020-134974, ASII/200021-134976; by Hasler-Stiftung grant #2327; and by ERC grant CME/291389.


  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)CrossRefGoogle Scholar
  2. 2.
    Barnett, M., Naumann, D.A.: Friends need a bit more: maintaining invariants over shared state. In: Kozen, D. (ed.) MPC, vol. 3125 of LNCS, pp. 54–84. Springer, Berlin, Heidelberg (2004)Google Scholar
  3. 3.
    Bobot, F., Filliâtre, J.-C., Marché, C., Paskevich, A.: Why3: shepherd your herd of provers. In: Proceedings of the First International Workshop on Intermediate Verification Languages (Boogie’11), Wroclaw, Poland, pp. 53–64. (2011).
  4. 4.
    Bormer, T., et al.: The COST IC0701 verification competition. In: Beckert, B., Damiani, F., Gurov, D. (eds.) FoVeOos, LNCS, pp. 3–21. Springer-Verlag, Berlin, Heidelberg (2012)Google Scholar
  5. 5.
    Filliâtre, J.-C., Paskevich, A., Stump, A.: The 2nd verified software competition: experience report. In: Vladimir, K., Bernhard, B., Armin, B., Geoff, S. (eds.) Proceedings of the 1st International Workshop on Comparative Empirical Evaluation of Reasoning Systems. pp. 36–49 (2012)Google Scholar
  6. 6.
    Gries, D.: The Science of Programming. Springer-Verlag, Berlin (1981)Google Scholar
  7. 7.
    Huisman, M., Klebanov, V., Monahan, R.: VerifyThis verification competition. (2012)
  8. 8.
    Jacobs, B., Smans, J., Piessens, F.: A quick tour of the VeriFast program verifier. In: Proceedings of APLAS 2010, pp. 304–311. Springer (2010)Google Scholar
  9. 9.
    Klebanov, T. et al.: The 1st verified software competition: Experience report. In: Butler, M., Schulte, W. (eds.) FM, vol. 6664 of LNCS, pp. 154–168. Springer, Berlin, Heidelberg (2011)Google Scholar
  10. 10.
    Leino, K.R.M.: This is Boogie 2. Technical report, Microsoft Research (2008)Google Scholar
  11. 11.
    Leino, K.R.M.: Dafny: an automatic program verifier for functional correctness. In: Clarke, E.M., Voronkov, A. (eds.) LPAR-16, pp. 348–370. Springer-Verlag, Berlin, Heidelberg (2010)Google Scholar
  12. 12.
    Leino, K.R.M., Monahan, R.: Reasoning about comprehensions with first-order SMT solvers. In Shin, S.Y., Ossowski, S. (eds.) Proceedings of the 2009 ACM symposium on applied computing (SAC’09), pp. 615–622. ACM Press (2009)Google Scholar
  13. 13.
    Naumann, D.A.: Observational purity and encapsulation. In: Cerioli, M (ed.) FASE, vol. 3442 of LNCS, pp. 190–204. Springer, Berlin, Heidelberg (2005)Google Scholar
  14. 14.
    Nordio, M., Calcagno, C., Meyer, B., Müller, P., Tschannen, J.: Reasoning about function objects. In: Proceedings of TOOLS-EUROPE, vol. 6141 of LNCS, pp. 79–96. Springer (2010)Google Scholar
  15. 15.
    Nordio, M., Calcagno, C., Müller, P., Meyer, B..: A sound and complete program logic for Eiffel. In: Meyer, B (ed.) TOOLS-EUROPE, vol. 33, pp. 195–214 (2009)Google Scholar
  16. 16.
    Patterson, D.: For better or worse, benchmarks shape a field: technical perspective. Commun. ACM 55(7), 104–104 (2012)CrossRefGoogle Scholar
  17. 17.
    Polikarpova, N., Furia, C.A., Meyer, B.: Specifying reusable components. In Proceedings of VSTTE’10, vol. 6217 of LNCS, pp. 127–141. Springer (2010)Google Scholar
  18. 18.
    Polikarpova, N., Furia, C.A., Pei, Y., Wei, Y., Meyer, B.: What good are strong specifications? In: David, N., Betty. H.C.C., Klaus, P. (eds.) ICSE, pp. 257–266. ACM (2013) IEEE Press Piscataway, NJ, USAGoogle Scholar
  19. 19.
    Polikarpova, N., Tschannen, J., Furia, C.A., Meyer, B.: Flexible invariants through semantic collaboration. (November 2013)
  20. 20.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Usable verification of object-oriented programs by combining static and dynamic techniques. In: Gilles, B., Alberto, P., Gerardo, S. (eds.) SEFM, vol. 7041 of LNCS, pp. 382–398. Springer-Verlag, Berlin, Heidelberg (2011)Google Scholar
  21. 21.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Verifying Eiffel programs with Boogie. In: BOOGIE workshop. (2011)
  22. 22.
    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.) Tools for Practical Software Verification, vol. 7682 of LNCS, pp. 134–156. Springer, Berlin, Heidelberg (2012)Google Scholar
  23. 23.
    Tschannen, J., Furia, C.A., Nordio, M., Meyer, B.: Program checking with less hassle. In: Cohen, E., Rybalchenko, A. (eds.) VSTTE, vol. 8164 of LNCS, pp. 149–169. Springer, Berlin, Heidelberg (2014)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Julian Tschannen
    • 1
    Email author
  • Carlo A. Furia
    • 1
  • Martin Nordio
    • 1
  1. 1.Chair of Software EngineeringETH ZurichZurichSwitzerland

Personalised recommendations