Abstract
Members of our research group participated in the VerifyThis competition at FM 2012 in Paris using the interactive specification and verification system KIV. In this article we describe the KIV verification system and its latest additions. We discuss our solutions to the three VerifyThis problems and which features of KIV were used in solving them. We also report on our findings from performing the proofs.
Similar content being viewed by others
Notes
The semicolon in the parameter list separates input and reference parameters, so that assignments to the result in the body of the procedure are visible to the caller.
Note that one needs to carefully track polarities of formulas here, as for example skolemization of \(\exists \) is only possible for positive polarity.
This takes up a proposal of a reviewer.
Note that the \(k\) used in the formula is one higher than the number used in Fig. 14. This means that \(k\) is \(0\) instead of \(-1\) at the end of the loop. Thus, we can stay within natural numbers.
References
Aehlig, K., Haftmann, F., Nipkow, T.: A compiled implementation of normalization by evaluation. In: Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics (THOL 08), vol. 5170, pp. 39–54. Springer LNCS, Berlin (2008)
Bäumler, S., Schellhorn, G., Tofan, B., Reif, W.: Proving linearizability with temporal logic. FAC J 23(1), 91–112 (2011)
Börger, E., Stärk, R.F.: Abstract state machines—a method for high-level system design and analysis. Springer, Berlin (2003)
Bormer, T., Brockschmidt, M., Distefano, D., Ernst, G., Filliatre, J. C., Grigore, R., Huisman, M., Klebanov, V., Marche, C., Monahan, R., Mostowski, W.I., Poiikarpova, N., Scheben, C., Schellhorn, G., Tofan, B., Tschannen, J., Ulbrich, M.: The cost ic0701 verification competition 2011. In: International Conference on Formal Verification of Object-Oriented Software, FoVeOOS 2011, vol. 7421, pp. 3–21. Springer, Berlin (2012)
Burstall, R.M.: Program proving as hand simulation with a little induction. Inf. Process. 74, 309–312 (1974)
Derrick, J., Schellhorn, G., Wehrheim, H.: Mechanising a correctness proof for a lock-free concurrent stack. In: Proceedings of FMOODS 2008, Oslo, vol. 5051, pp. 78–95. Springer LNCS, Berlin (2008)
Ernst, G., Schellhorn, G., Haneberg, D., Pfähler, J., Reif, W.: Verification of a virtual filesystem switch. In: Proceedings of Verified Software: Theories, Tools, Experiments, vol. 8164, pp. 242–261. Springer, Berlin (2014)
Floyd, R.W.: Assigning meanings to programs. In: Schwartz, J.T. (ed.) Proceedings of the Symposium on Applied Mathematics, vol. 19, pp. 19–32. American Mathematical Society, New York (1967)
Fuchß, T., Reif, W., Schellhorn, G., Stenzel, K.: Three Selected Case Studies in Verification. In: Broy, M., Jähnichen, S.: (eds.) KORSO: Methods, Languages, and Tools for the Construction of Correct Software—Final Report, vol. 1009. Springer LNCS, Berlin (1995)
Grandy, H., Bischof, M., Schellhorn, G., Reif, W., Stenzel, K.: Verification of Mondex Electronic Purses with KIV: From a Security Protocol to Verified Code. In: FM 2008: 15th International Symposium on Formal Methods, vol. 5014. Springer LNCS, Berlin (2008)
Gurevich, Y.: Evolving algebras 1993: Lipari guide. In: Börger, E. (ed.) Specification and validation methods, pp. 9–36. Oxford Univ. Press, Oxford (1995)
Haneberg, D., Bäumler, S., Balser, M., Grandy, H., Ortmeier, F., Reif, W., Schellhorn, G., Schmitt, J., Stenzel, K.: The user interface of the KIV verification system—as system description. Electronic Notes in Theoretical Computer Science UITP special issue (2006)
Haneberg, D., Moebius, N., Reif, W., Schellhorn, G., Stenzel, K.: Mondex: engineering a provable secure electronic purse. Int. J. Softw. Inf. 5(1):159–184 (2011). http://www.ijsi.org
Harel, D., Kozen, D., Tiuryn, J.: Dynamic logic. In: Gabbay, D., Guenther, F., (eds.) Handbook of philosophical logic, vol. 4, , 2nd edn, pp. 99–217. Kluwer Academic Publishers, Dordecht (2002)
Huisman, M., Klebanov, V., Monahan, R.: On the organisation of program verification competitions. In: Proceedings of the 1st International Workshop on Comparative Empirical Evaluation of Reasoning Systems (COMPARE), CEUR Workshop Proceedings, vol. 873 CEUR-WS.org (2012)
Jones, C.B.: Specification and design of (parallel) programs. In: Proceedings of IFIP’83, pp. 321–332. North-Holland, Amsterdam (1983)
Web presentation of the KIV solutions for the VerifyThis Competition, 2012. http://www.informatik.uni-augsburg.de/swt/projects/verifythis-competition-2012
Manber, U., Myers, G.: Suffix Arrays: a new method for on-Line string searches. In Proceedings of the first annual ACM-SIAM symposium on Discrete algorithms, SODA ’90, pp. 319–327. Society for Industrial and Applied Mathematics (1990)
Manna, Z., Waldinger, R.: Is “sometime” sometimes better than “always”?: intermittent assertions in proving program correctness. Commun. ACM 21(2), 159–172 (1978)
Moszkowski, B.: A temporal logic for multilevel reasoning about hardware. IEEE Comput. 18(2), 10–19 (1985)
Owre, S., Rajan, S., Rushby, J.M., Shankar, N., Srivas, M.: PVS: Combining specification, proof checking, and model checking. In: Alur, R., Henzinger, T.A. (eds.) Computer Aided Verification (CAV), vol. 1102. Springer LNCS, Berlin (1996)
Pfähler, J., Ernst, G., Schellhorn, G., Haneberg, D., Reif, W.: Formal specification of an erase block management layer for flash memory. In: Bertacco, V., Legay, A. (eds.) Hardware and software: verification and testing, vol. 8244, pp. 214–229. Springer International Publishing LNCS, Berlin (2013)
Reif, W., Schellhorn, G., Stenzel, K., Balser, M.: Structured specifications and interactive proofs with KIV. In: Bibel, W., Schmitt, P. (eds.) Automated Deduction—A Basis for Applications, vol. II, pp. 13–39. Kluwer, Dordrecht (1998)
Reif, W., Schellhorn, G., Stenzel, K., Balser, M.: Structured specifications and interactive proofs with KIV. In: Bibel, W., Schmitt, P. (eds.) Automated Deduction—A Basis for Applications, vol. II Systems and Implementation Techniques. Interactive Theorem Proving, Chap. 1, pp. 13–39. Kluwer Academic Publishers, Dordrecht (1998)
Reynolds, J.C.: Separation logic: a logic for shared mutable data structures. In: Proceedings of LICS, pp. 55–74. IEEE Computer Society, New York (2002)
Robinson, P., Staples, J.: Formalizing a hierarchical structure of practical mathematical reasoning. J. Logic Comput. 3(1), 47–61 (1993)
Schellhorn, G., Ahrendt, W.: The WAM case study: verifying compiler correctness for prolog with KIV. In: Bibel, W., Schmitt, P. (eds.) Automated Deduction—A Basis for Applications, vol. III. Applications, Automated Theorem Proving in Software Engineering, Chap. 3, pp. 165–194. Kluwer Academic Publishers, Dordecht (1998)
Schellhorn, G., Grandy, H., Haneberg, D., Moebius, N., Reif, W.: A systematic verification approach for Mondex electronic purses using ASMs. In: Glässer, U., Abrial, J.-R. (eds.) Dagstuhl Seminar on Rigorous Methods for Software Construction and Analysis, vol. 5115, pp. 93–110. Springer LNCS, Berlin (2009)
Schellhorn, G., Tofan, B., Ernst, G., Reif, W.: Interleaved programs and rely-guarantee reasoning with ITL. In: Proceedings of the 18th International Symposium on Temporal Representation and Reasoning (TIME), pp. 99–106. IEEE Computer Society Press, New York (2011)
Schierl, A., Schellhorn, G., Haneberg, D., Reif, W.: Abstract specification of the UBIFS file system for flash memory. In: Proceedings of FM 2009: Formal Methods, vol. 5850, pp. 190–206. Springer LNCS, Berlin (2009)
Stenzel, K.: Verification of Java Card Programs. PhD thesis, Universität Augsburg, Fakultät für Angewandte Informatik, http://www.opus-bayern.de/uni-augsburg/volltexte/2005/122/ (2005)
Szabo, M.E. (ed.): The Collected Papers of Gerhard Gentzen. North-Holland, Amsterdam (1969)
Tofan, B., Schellhorn, G., Reif, W.: Formal verification of a lock-free stack with hazard pointers. In Proc. ICTAC, vol. 6916, pp. 239–255. Springer LNCS, Berlin (2011)
Tofan, B., Schellhorn, G., Reif, W.: Local rely-guarantee conditions for linearizability and lock-freedom. Karlsruhe Reports in Informatics 2011–26, Karlsruhe Institute of Technology (2011)
Tuerk, T.: Local reasoning about while-loops. In: Müller, P., Naumann, D., Yang, H. (eds.) Proceedings, VS-Theory Workshop of VSTTE 2010, pp. 29–39 (2010)
The Alloy Project. http://alloy.mit.edu
Xu, Q., de Roever, W.-P., He, J.: The rely-guarantee method for verifying shared variable concurrent programs. FAC J 9(2), 149–174 (1997)
Acknowledgments
We thank the organizers for providing interesting problems and for the opportunity to discuss the solutions with the other participants after the competition. For us, this led to a better understanding of the difficulties involved and how they were tackled by individual teams and their tools. We also thank the reviewers for their constructive reviews. They have led to small improvements and extensions for two of the case studies.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Ernst, G., Pfähler, J., Schellhorn, G. et al. KIV: overview and VerifyThis competition. Int J Softw Tools Technol Transfer 17, 677–694 (2015). https://doi.org/10.1007/s10009-014-0308-3
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10009-014-0308-3