Skip to main content
Log in

A verification tool for ERLANG

  • Special section: An experience in the establishment of collaboration between academia and industry
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Armstrong J., Virding R., Wikström C., Williams M.: Concurrent programming in Erlang. Prentice-Hall, London, 2nd edn, 1996

  2. 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

  3. 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

  4. 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

  5. Bertot Y., Thery L.: A generic approach to building user interfaces for theorem provers. J Symbolic Comput 25(7):161–194, 1998

    Article  Google Scholar 

  6. 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

  7. Dam M.: Proving properties of dynamic process networks. Inf Computat 140:95–114, 1998

    Article  MathSciNet  Google Scholar 

  8. 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

  9. 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

  10. Dam M., Gurov D.: μ-calculus with explicit points and approximations. In: Proc. FICS’2000, 2000

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. Gordon M.J.C., Melham T.F. (eds.): Introduction to HOL: a theorem proving environment for higher order logic. Cambridge University, Cambridge, UK, 1993

  17. 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

  18. Hoare C.A.R.: An axiomatic basis for computer programming. Comm ACM 12:576–580, 1969

    Article  Google Scholar 

  19. Huch F.: Verification of Erlang programs using abstract interpretation and model checking. In: Proc. ICFP ’99, ACM SIGPLAN Notices, 34(9):261–272, 1999

  20. Kozen D.: Results on the propositional μ-calculus. Theoret Comput Sci 27:333–354, 1983

    Article  MathSciNet  Google Scholar 

  21. Milner R.: Communication and Concurrency. Prentice-Hall, Englewood Cliffs, N.J., USA, 1989

  22. Milner R., Tofte M., Harper R.: The definition of Standard ML – revised. MIT, Boston, Mass., USA, 1997

  23. Necula G.C.: Proof–carrying code. In: Proc. POPL’97, pp. 106–119. ACM, 1997

  24. Nilsson H.: Patent Application, 1999

  25. 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

  26. Park D.: Finiteness is mu-Ineffable. Theoret Comput Sci 3:173–181, 1976

    Article  MathSciNet  Google Scholar 

  27. Paulson L.C.: Isabelle: a generic theorem prover, Lecture Notes in Computer Science, vol. 828. Springer, Berlin Heidelberg New York, 1994

  28. Plotkin G.D.: A structural approach to operational semantics. Aarhus University report DAIMI FN-19, 1981

  29. Sahlin D., Franzén T., Haridi S.: An intuitionistic predicate logic theorem prover. In: J Logic Comput 2(5):619–656, 1992

  30. 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

  31. Wikström C., Nilsson H., Mattson H.: Mnesia database management system. In: Open Telecom Platform Users Manual. Open Systems, Ericsson Utvecklings, Stockholm, Sweden, 1997

  32. Winskel G.: A note on model checking the modal ν-calculus. Theoret Comput Sci 83:157–187, 1991

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding authors

Correspondence to Lars–Åke Fredlund , Dilian Gurov , Thomas Noll , Mads Dam , Thomas Arts or Gennady Chugunov .

Rights and permissions

Reprints 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

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s100090100071

Keywords

Navigation