Abstract
This paper presents an overview of the main results of the project “Verification of ERLANG Programs ”, which is funded by the Swedish Business Development Agency (NUTEK) and by Ericsson within the ASTEC (Advanced Software TEChnology) initiative. Its main outcome is the ERLANG Verification Tool (EVT), a theorem prover which assists in obtaining proofs that ERLANG applications satisfy their correctness requirements formulated as behavioural properties in a modal logic with recursion. We give a summary of the verification framework as supported by EVT, discuss reasoning principles essential for successful proofs such as inductive and compositional reasoning, and an efficient treatment of side-effect-free code. The experiences of applying the tool in an industrial case study are summarised, and an approach for supporting verification in the presence of program libraries is outlined.
EVT is essentially a classical proof assistant, or theorem-proving tool, requiring users to intervene in the proof process at crucial steps such as stating program invariants. However, the tool offers considerable support for automatic proof discovery through higher-level tactics tailored to the particular task of the verification of ERLANG programs. In addition, a graphical interface permits easy navigation through proof tableaux, proof reuse, and meaningful feedback about the current proof state, to assist users in taking informed proof decisions.
Similar content being viewed by others
References
Armstrong J., Virding R., Wikström C., Williams M.: Concurrent programming in Erlang. Prentice-Hall, London, 2nd edn, 1996
Arts T., Dam M.: Verifying a distributed database lookup manager written in Erlang. In: Wing J.M., Woodcock J., Davies J., (eds.), Formal Methods Europe (FM’99), Lecture Notes in Computer Science, vol. 1708. Springer, Berlin Heidelberg New York, 1999, pp. 682–700
Arts T., Dam M., Fredlund L.-Å., Gurov D.: System description: verification of distributed Erlang programs. In: Proc. CADE’98, Lecture Notes in Computer Science, vol. 1421. Springer, Berlin Heidelberg New York, 1998, pp. 38–41
Arts T., Noll T.: Verifying generic Erlang client–server implementations. In: Proc. 12th Int. Workshop on the Implementation of Functional Languages (IFL’00), Lecture Notes in Computer Science, vol. 2011. Springer, Berlin Heidelberg New York, 2001, pp. 37–52
Bertot Y., Thery L.: A generic approach to building user interfaces for theorem provers. J Symbolic Comput 25(7):161–194, 1998
Constable R.L., Allen S.F., Bromley H.M., Cleaveland W.R., Cremer J.F., Harper R.W., Howe D.J., Knoblock T.B., Mendler N.P, Panangaden P., Sasaki J.T., Smith S.F.: Implementing mathematics with the Nuprl proof development system. Prentice-Hall, Englewood Cliffs, N.J., USA, 1986
Dam M.: Proving properties of dynamic process networks. Inf Computat 140:95–114, 1998
Dam M., Fredlund L.-Å., Gurov D.: Toward parametric verification of open distributed systems. In: Langmaack H., Pnueli A., de Roever W.-P., (eds), Compositionality: the significant difference, Lecture Notes in Computer Science, vol. 1536. Springer, Berlin Heidelberg New York, 1998, pp. 150–185
Dam M., Gurov D.: Compositional verification of CCS processes. In: Proc. PSI’99, Lecture Notes in Computer Science, vol. 1705. Springer, Berlin Heidelberg New York, 1999, pp. 247–256
Dam M., Gurov D.: μ-calculus with explicit points and approximations. In: Proc. FICS’2000, 2000
Dowek G., Felty A., Herbelin H., Huet G., Murthy C., Parent C., Paulin-Mohring C., Werner B.: The Coq proof assistant user’s guide version 5.8. Technical Report 154, INRIA, 1993
Fredlund L.-Å.: A Framework for Reasoning about Erlang Code. PhD thesis, Department of Microelectronics and Information Technology, Royal Institute of Technology, 2001. KTH/IT/AVH–01/04–SE
Fredlund L.-Å., Gurov D., Noll T.: The Erlang Verification Tool. In: Proc. 7th Int. Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’01), Lecture Notes in Computer Science, vol. 2031. Springer, Berlin Heidelberg New York, 2001, pp. 582–585
Fredlund L.-Å., Gurov D.: A framework for formal reasoning about open distributed systems. In: Proc. ASIAN’99, Lecture Notes in Computer Science, vol. 1742. Springer, Berlin Heidelberg New York, 1999, pp. 87–100
Fröhlich M., Werner M.: The graph visualization system daVinci – a user interface for applications. Technical Report 5/94, Department of Computer Science; Universität Bremen, 1994
Gordon M.J.C., Melham T.F. (eds.): Introduction to HOL: a theorem proving environment for higher order logic. Cambridge University, Cambridge, UK, 1993
Gurov D., Chugunov G.: Verification of Erlang programs: factoring out the side-effect-free fragment. In: Proc. FMICS 2000, GMD Report No.91, pp. 109–122, 2000
Hoare C.A.R.: An axiomatic basis for computer programming. Comm ACM 12:576–580, 1969
Huch F.: Verification of Erlang programs using abstract interpretation and model checking. In: Proc. ICFP ’99, ACM SIGPLAN Notices, 34(9):261–272, 1999
Kozen D.: Results on the propositional μ-calculus. Theoret Comput Sci 27:333–354, 1983
Milner R.: Communication and Concurrency. Prentice-Hall, Englewood Cliffs, N.J., USA, 1989
Milner R., Tofte M., Harper R.: The definition of Standard ML – revised. MIT, Boston, Mass., USA, 1997
Necula G.C.: Proof–carrying code. In: Proc. POPL’97, pp. 106–119. ACM, 1997
Nilsson H.: Patent Application, 1999
Owre S., Rajan S., Rushby J.M., Shankar N., Srivas M.K. PVS: combining specification, proof checking, model checking. In: Proc. CAV’96, Lecture Notes in Computer Science, vol. 1102. Springer, Berlin Heidelberg New York, 1996, pp. 411–414
Park D.: Finiteness is mu-Ineffable. Theoret Comput Sci 3:173–181, 1976
Paulson L.C.: Isabelle: a generic theorem prover, Lecture Notes in Computer Science, vol. 828. Springer, Berlin Heidelberg New York, 1994
Plotkin G.D.: A structural approach to operational semantics. Aarhus University report DAIMI FN-19, 1981
Sahlin D., Franzén T., Haridi S.: An intuitionistic predicate logic theorem prover. In: J Logic Comput 2(5):619–656, 1992
Simpson A.: Compositionality via cut-elimination: Hennessy-Milner logic for an arbitrary GSOS. In: Proc. LICS, pp. 420–430. IEEE Computer Society, New York, 1995
Wikström C., Nilsson H., Mattson H.: Mnesia database management system. In: Open Telecom Platform Users Manual. Open Systems, Ericsson Utvecklings, Stockholm, Sweden, 1997
Winskel G.: A note on model checking the modal ν-calculus. Theoret Comput Sci 83:157–187, 1991
Author information
Authors and Affiliations
Corresponding authors
Rights and permissions
About this article
Cite this article
Fredlund , L., Gurov , D., Noll , T. et al. A verification tool for ERLANG. STTT 4, 405–420 (2003). https://doi.org/10.1007/s100090100071
Published:
Issue Date:
DOI: https://doi.org/10.1007/s100090100071