Static analysis of communications for Erlang

In this paper, we present an insight of the two major contributions of works made to build a static analyzer of Erlang programs. First, we introduce a general framework based on a process calculus (the configurations). This formalism describes concurrent aspects and abstracts functional ones. Obtaining the Erlang semantics is then just instantiating this framework with an adequate functional setting. The second contribution is a sophisticated type system for Erlang. This type system infers types and subtyping constraints for a program and ensures that the collected constraints have at least one solution. This system detects usual functional errors but also some of the communication errors. More precisely, for each process, it cumulates all received messages and all handled messages and ensures that the first is included in the second. To do this, it borrows concepts to the object (or record) usual typing in ML.