An implementation of a reversible semantics for Erlang.
This project uses wx, the Erlang binding of wxWidgets.
Therefore, you might have to build Erlang/OTP with wxWidgets if you did not in the past, but we recommend you to try to compile and execute the application first.
First, compile the project:
make
Then, execute the script rev-erlang.sh:
./rev-erlang.sh
An astonishing graphical interface will appear in your screen.
To start using the application:
- Select an Erlang file using the File > Open option from the menu bar. This compiles the file and shows the Core Erlang code in the Code window.
- Choose the function to be evaluated and write its arguments (if needed).
- Push the START button.
Then, the initial state of the system will appear in the State window.
You can control the evaluation of a program using two modes:
- Manual: Introduce a
Pid
in thePid/MsgId
text box and choose a fireable rule. - Automatic:
- Forward/Backward: Introduce a number of steps
N
in theSteps
text box and push theForward
or theBackward
button. Then,N
evaluation steps will be performed in the chosen direction. - Normalize: Move the system forward up to a system where the only firable rules are Sched (deliver a message).
- Forward/Backward: Introduce a number of steps
Both modes can be used interchangeably.
This tool is an implementation of the improved version of a reversible semantics for Erlang (submitted for publication). A preliminary version of this semantics can be found in:
- Naoki Nishida, Adrián Palacios and Germán Vidal. A Reversible Semantics for Erlang. To be published in Proceedings of the 26th International Symposium on Logic-Based Program Synthesis and Transformation.
Check the Wiki for more information.