Improving the Usability of Specification Languages and Methods for Annotation-Based Verification

  • Bernhard Beckert
  • Thorsten Bormer
  • Vladimir Klebanov
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6957)


It is widely recognized that human input is indispensable in deductive verification of real-world code. Verification engineers have to guide the proof search and provide information reflecting their insight into the workings of the program. Lately we have seen a shift towards an annotation-based paradigm – sometimes called “verifying compiler” –, where this information is provided in the form of program annotations instead of interactively during proof construction.

Suspicions have been growing recently that expressing verification knowledge as annotations in their current form suffers from serious scalability and maintainability issues.

In this paper, we pinpoint some of the biggest neuralgic spots and provide recommendations to the designers of annotation-based verification systems aimed to improve usability of specification languages and methods and, thus, the tool’s productivity. We clarify the different purposes that annotations can serve and show why a certain class of annotations that are not program requirements is currently indispensable for proof construction. Moreover, we discuss how the use of data abstractions can be improved in annotation-based specifications.


Proof Obligation Relative Completeness Abstract Data Type Proof Search Method Contract 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# programming system: An overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  2. 2.
    Beckert, B., Moskal, M.: Deductive verification of system software in the Verisoft XT project. In: KI 2009, Online first version available at SpringerLink (2009)Google Scholar
  3. 3.
    Cohen, E., Dahlweid, M., Hillebrand, M., 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)CrossRefGoogle Scholar
  4. 4.
    Cook, S.A.: Soundness and completeness of an axiom system for program verification. SIAM Journal of Computing 7(1), 70–90 (1978)MathSciNetCrossRefzbMATHGoogle Scholar
  5. 5.
    de Moura, L., Bjørner, N.: Z3: An efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  6. 6.
    DeLine, R., Leino, K.R.M.: BoogiePL: A typed procedural language for checking object-oriented programs. Technical Report MSR-TR-2005-70, Microsoft Research (2005)Google Scholar
  7. 7.
    Filliâtre, J.-C., Marché, C.: Multi-prover verification of C programs. In: Davies, J., Schulte, W., Barnett, M. (eds.) ICFEM 2004. LNCS, vol. 3308, pp. 15–29. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  8. 8.
    Harel, D.: First-Order Dynamic Logic. LNCS, vol. 68. Springer, Heidelberg (1979)zbMATHGoogle Scholar
  9. 9.
    Klebanov, V., Müller, P., Shankar, N., Leavens, G.T., Wüstholz, V., Alkassar, E., Arthan, R., Bronish, D., Chapman, R., Cohen, E., Hillebrand, M., Jacobs, B., Leino, K.R.M., Monahan, R., Piessens, F., Polikarpova, N., Ridge, T., Smans, J., Tobies, S., Tuerk, T., Ulbrich, M., Weiß, B.: The 1st verified software competition: Experience report. In: Butler, M., Schulte, W. (eds.) FM 2011. LNCS, vol. 6664, pp. 154–168. Springer, Heidelberg (2011) Materials available at, CrossRefGoogle Scholar
  10. 10.
    Kupferman, O.: Sanity checks in formal verification. In: Baier, C., Hermanns, H. (eds.) CONCUR 2006. LNCS, vol. 4137, pp. 37–51. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  11. 11.
    Mosses, P.D. (ed.): CASL Reference Manual – The Complete Documentation of the Common Algebraic Specification Language. LNCS, vol. 2960. Springer, Heidelberg (2004)zbMATHGoogle Scholar
  12. 12.
    Schulte, W., Songtao, X., Smans, J., Piessens, F.: A glimpse of a verifying C compiler. In: Proceedings, C/C++ Verification Workshop (2007)Google Scholar
  13. 13.
    Zeller, A.: Mining specifications: A roadmap. In: Proceedings, The Future of Software Engineering, Zurich, Switzerland, pp. 173–182. Springer, Heidelberg (2010)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  • Bernhard Beckert
    • 1
  • Thorsten Bormer
    • 1
  • Vladimir Klebanov
    • 1
  1. 1.Institute for Theoretical Computer ScienceKarlsruhe Institute of TechnologyGermany

Personalised recommendations