Abstract
Erlang is a functional and concurrent programming language. The aim of this paper is to investigate basic properties of the Erlang concurrency model, which is based on asynchronous communication through mailboxes accessed via pattern matching. To achieve this goal, we consider Core Erlang (which is an intermediate step in Erlang compilation) and we define, on top of its operational semantics, an observational semantics following the approach used to define asynchronous bisimulation for the \(\pi \)-calculus. Our work allows us to shed some light on the management of process identifiers in Erlang, different from the various forms of name mobility already studied in the literature. In fact, we need to modify standard definitions to cope with such specific features of Erlang.
This work has been partially supported by the French National Research Agency (ANR), project DCore n. ANR-18-CE25-0007.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Amadio, R.M., Castellani, I., Sangiorgi, D.: On bisimulations for the asynchronous \(\pi \)-calculus. Theor. Comput. Sci. 195(2), 291–324 (1998)
Armstrong, J.: A history of Erlang. In: Third ACM SIGPLAN Conference on History of Programming Languages, pp. 6-1–6-26. ACM (2007)
Armstrong, J., Virding, R., Wikström, C., Williams, M.: Concurrent Programming in Erlang, 2nd edn. Prentice Hall, Upper Saddle River (1996)
Bergstra, J.A., Klop, J.W.: Process algebra for synchronous communication. Inf. Control 60(1–3), 109–137 (1984)
de Boer, F.S., Klop, J.W., Palamidessi, C.: Asynchronous communication in process algebra. In: LICS, pp. 137–147. IEEE Computer Society (1992)
Boreale, M., De Nicola, R., Pugliese, R.: Basic observables for processes. Inf. Comput. 149(1), 77–98 (1999)
Boreale, M., De Nicola, R., Pugliese, R.: A theory of “may” testing for asynchronous languages. In: Thomas, W. (ed.) FoSSaCS 1999. LNCS, vol. 1578, pp. 165–179. Springer, Heidelberg (1999). https://doi.org/10.1007/3-540-49019-1_12
Boreale, M., De Nicola, R., Pugliese, R.: Trace and testing equivalence on asynchronous processes. Inf. Comput. 172(2), 139–164 (2002)
Caballero, R., Martin-Martin, E., Riesco, A., Tamarit, S.: Declarative debugging of concurrent Erlang programs. J. Log. Algebr. Meth. Program. 101, 22–41 (2018)
Carlsson, R., et al.: Core Erlang 1.0.3. language specification (2004). https://www.it.uu.se/research/group/hipe/cerl/doc/core_erlang-1.0.3.pdf
Castellani, I., Hennessy, M.: Testing theories for asynchronous languages. In: Arvind, V., Ramanujam, S. (eds.) FSTTCS 1998. LNCS, vol. 1530, pp. 90–101. Springer, Heidelberg (1998). https://doi.org/10.1007/978-3-540-49382-2_9
De Nicola, R., Ferrari, G.L., Pugliese, R.: KLAIM: a kernel language for agents interaction and mobility. IEEE Trans. Softw. Eng. 24(5), 315–330 (1998)
De Nicola, R., Hennessy, M.: Testing equivalences for processes. Theor. Comput. Sci. 34, 83–133 (1984)
Demangeon, R., Hirschkoff, D., Sangiorgi, D.: Termination in impure concurrent languages. In: Gastin, P., Laroussinie, F. (eds.) CONCUR 2010. LNCS, vol. 6269, pp. 328–342. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-15375-4_23
Fredlund, L.A.: A framework for reasoning about Erlang code. Ph.D. thesis, Royal Institute of Technology, Stockholm, Sweden (2001)
Fredlund, L., Earle, C.B.: Model checking Erlang programs: the functional approach. In: ACM SIGPLAN Workshop on Erlang, pp. 11–19. ACM (2006)
Fredlund, L., Gurov, D., Noll, T., Dam, M., Arts, T., Chugunov, G.: A verification tool for Erlang. STTT 4(4), 405–420 (2003)
Kobayashi, N.: A partially deadlock-free typed process calculus. Trans. Program. Lang. Syst. 20(2), 436–482 (1998)
Kobayashi, N., Sangiorgi, D.: A hybrid type system for lock-freedom of mobile processes. ACM Trans. Program. Lang. Syst. 32(5), 16 (2010)
Lanese, I., Nishida, N., Palacios, A., Vidal, G.: CauDEr: a causal-consistent reversible debugger for Erlang. In: Gallagher, J.P., Sulzmann, M. (eds.) FLOPS 2018. LNCS, vol. 10818, pp. 247–263. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-90686-7_16
Lanese, I., Nishida, N., Palacios, A., Vidal, G.: A theory of reversibility for Erlang. J. Log. Algebr. Meth. Program. 100, 71–97 (2018)
Letuchy, E.: Erlang at Facebook (2009). http://www.erlang-factory.com/conference/SFBayAreaErlangFactory2009/speakers/EugeneLetuchy
Merro, M., Sangiorgi, D.: On asynchrony in name-passing calculi. Math. Struct. Comput. Sci. 14(5), 715–767 (2004)
Milner, R., Sangiorgi, D.: Barbed bisimulation. In: Kuich, W. (ed.) ICALP 1992. LNCS, vol. 623, pp. 685–695. Springer, Heidelberg (1992). https://doi.org/10.1007/3-540-55719-9_114
Milner, R.: Communication and Concurrency. PHI Series in Computer Science. Prentice Hall, Upper Saddle River (1989)
Milner, R., Parrow, J., Walker, D.: A calculus of mobile processes. I. Inf. Comput. 100(1), 1–40 (1992)
Nishida, N., Palacios, A., Vidal, G.: A reversible semantics for Erlang. In: Hermenegildo, M.V., Lopez-Garcia, P. (eds.) LOPSTR 2016. LNCS, vol. 10184, pp. 259–274. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-63139-4_15
Sangiorgi, D., Milner, R.: The problem of “weak bisimulation up to”. In: Cleaveland, W.R. (ed.) CONCUR 1992. LNCS, vol. 630, pp. 32–46. Springer, Heidelberg (1992). https://doi.org/10.1007/BFb0084781
Svensson, H., Fredlund, L.A.: A more accurate semantics for distributed Erlang. In: SIGPLAN Workshop on Erlang, pp. 43–54. ACM (2007)
Svensson, H., Fredlund, L.A., Benac Earle, C.: A unified semantics for future Erlang. In: ACM SIGPLAN Workshop on Erlang, pp. 23–32. ACM (2010)
Tóth, M., Bozó, I.: Static analysis of complex software systems implemented in Erlang. In: Zsók, V., Horváth, Z., Plasmeijer, R. (eds.) CEFP 2011. LNCS, vol. 7241, pp. 440–498. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-32096-5_9
Yoshida, N., Berger, M., Honda, K.: Strong normalisation in the \(\pi \)-calculus. Inf. Comput. 191(2), 145–202 (2004)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Lanese, I., Sangiorgi, D., Zavattaro, G. (2019). Playing with Bisimulation in Erlang. In: Boreale, M., Corradini, F., Loreti, M., Pugliese, R. (eds) Models, Languages, and Tools for Concurrent and Distributed Programming. Lecture Notes in Computer Science(), vol 11665. Springer, Cham. https://doi.org/10.1007/978-3-030-21485-2_6
Download citation
DOI: https://doi.org/10.1007/978-3-030-21485-2_6
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-21484-5
Online ISBN: 978-3-030-21485-2
eBook Packages: Computer ScienceComputer Science (R0)