Skip to main content

Towards Symbolic Execution in Erlang

  • Conference paper
  • First Online:
Perspectives of System Informatics (PSI 2014)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8974))

Abstract

The concurrent functional language Erlang has a number of distinguishing features, like dynamic typing, concurrency via asynchronous message passing or hot code loading, that make it especially appropriate for distributed, fault-tolerant, soft real-time applications. In this paper, we introduce a symbolic execution technique for Erlang. We discuss how both an overapproximation and an underapproximation of the concrete semantics can be obtained. We illustrate our approach through some examples. To the best of our knowledge, this is the first attempt to formalize symbolic execution in the context of this language, where previous approaches have only considered exploring different schedulings but have not dealt with symbolic data.

This work has been partially supported by the Spanish Ministerio de Economía y Competitividad (Secretaría de Estado de Investigación, Desarrollo e Innovación) under grant TIN2013-44742-C4-1-R and by the Generalitat Valenciana under grant PROMETEO/2011/052.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. Armstrong, J., Virdig, R., Williams, M.: Concurrent Programming in Erlang, 2nd edn. Prentice Hall, Englewood Cliffs (1996)

    Google Scholar 

  2. Arts, T., Hughes, J., Johansson, J., Wiger, U.T.: Testing telecoms software with quviq QuickCheck. In: Proceedings of the Erlang Workshop, pp. 2–10. ACM (2006)

    Google Scholar 

  3. Benac Earle, C.: Symbolic program execution using the Erlang verification tool. In: Proceedings of the 9th Int’l Workshop on Functional and Logic Programming (WFLP 2000), pp. 42–55 (2000)

    Google Scholar 

  4. Claessen, K., Svensson, H.: A semantics for distributed Erlang. In: Proceedings of the 2005 ACM SIGPLAN Workshop on Erlang, pp. 78–87. ACM (2005)

    Google Scholar 

  5. Felleisen, M., Friedman, D.P., Kohlbecker, E.E., Duba, B.F.: A syntactic theory of sequential control. Theor. Comput. Sci. 52, 205–237 (1987)

    Article  MATH  MathSciNet  Google Scholar 

  6. Fredlund, L.-A.: A framework for reasoning about Erlang code. Ph.D. thesis, The Royal Institute of Technology, Sweeden (2001)

    Google Scholar 

  7. Fredlund, L.-A., Svensson, H.: McErlang: a model checker for a distributed functional programming language. In: Proceedings of ICFP 2007, pp. 125–136. ACM (2007)

    Google Scholar 

  8. Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Proceedings of PLDI 2005, pp. 213–223. ACM (2005)

    Google Scholar 

  9. Huch, F.: Verification of Erlang programs using abstract interpretation and model checking. In: Proceedings of ICFP 1999, pp 261–272. ACM (1999)

    Google Scholar 

  10. Noll, T.: A Rewriting Logic Implementation of Erlang. Electr. Notes Theor. Comput. Sci. 44(2), 206–224 (2001)

    Article  Google Scholar 

  11. Noll, T.: Equational Abstractions for Model Checking Erlang Programs. Electr. Notes Theor. Comput. Sci. 118, 145–162 (2005)

    Article  Google Scholar 

  12. Pasareanu, C.S., Visser, W., Bushnell, D.H., Geldenhuys, J., Mehlitz, P.C., Rungta, N.: Symbolic PathFinder: integrating symbolic execution with model checking for Java bytecode analysis. Autom. Softw. Eng., 20(3), 391–425 (2013)

    Google Scholar 

  13. Sen, K., Marinov, D., Agha, G.: CUTE: a concolic unit testing engine for C. In: Proceedings of ESEC/SIGSOFT FSE 2005, pp. 263–272. ACM (2005)

    Google Scholar 

  14. Svensson, H., Fredlund, L.-A., Benac Earle, C.: A unified semantics for future Erlang. In: Proceedings of the Erlang Workshop, pp. 23–32. ACM (2010)

    Google Scholar 

  15. Svensson, H., Fredlund, L.-A.: A more accurate semantics for distributed Erlang. In: Proceedings of the Erlang Workshop, pp. 43–54. ACM (2007)

    Google Scholar 

  16. Vidal, G.: Towards erlang verification by term rewriting. In: Gupta, G., Peña, R. (eds.) LOPSTR 2013, LNCS 8901. LNCS, vol. 8901, pp. 109–126. Springer, Heidelberg (2014)

    Chapter  Google Scholar 

  17. Vidal, G.: Symbolic execution in Erlang. Technical report, DSIC, UPV (2014). http://users.dsic.upv.es/~gvidal/

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Germán Vidal .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2015 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Vidal, G. (2015). Towards Symbolic Execution in Erlang. In: Voronkov, A., Virbitskaite, I. (eds) Perspectives of System Informatics. PSI 2014. Lecture Notes in Computer Science(), vol 8974. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-46823-4_28

Download citation

  • DOI: https://doi.org/10.1007/978-3-662-46823-4_28

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-662-46822-7

  • Online ISBN: 978-3-662-46823-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics