A static analyzer to generate Choreography Automata
from Erlang source, with a bottom-up approach.
Chorer is an analysis tool that examines Erlang programs and extracts formal models of their communication behaviour. Its purpose is to help developers uncover communication bugs in distributed and actor-based systems by using insights from Choreography Automata.
A Choreography Automaton is a labelled transition system that represents the communication behaviour of concurrent systems. Each transition is annotated with a communication action (such as sending or receiving messages), and the automaton describes all possible evolutions of the system.
Formally, the concept was introduced to model structured interactions and communication protocols in message-passing programs. Choreography Automata provide a foundation for verification, analysis, and reasoning on distributed systems.
A Local View denotes the behaviour of a single function within the program. It focuses on the transitions that originate from that function, describing the messages it sends and receives along with possible internal evolutions.
The Global View represents the entire behaviour of a system in a single automaton. Its transitions describe communication actions across all processes. This gives an overview of the complete behaviour of the program.
Chorer reconstructs the possible message-passing interactions between Erlang processes and represents them using Local Views and a Global View. The extraction follows a bottom-up, over-approximating approach: any communication that might occur is included. This ensures that potential issues, including subtle concurrency bugs, are highlighted without being missed. Deadlocks are highlighted directly in the Global View graph: they appear as red states. This web interface always uses the lastest version of Chorer.
⚠ This tool is an early prototype and still under active development, bugs, incomplete features, and unexpected behaviors are to be expected.
For a deeper explanation of the ideas behind Chorer, including its theoretical foundations, strengths, and limitations, please refer to the accompanying thesis2 (outdated, only in italian), paper3 and poster.