From session π to coincident event structures
This webpage is an implementation of a translation from session π to coincident event structure. It takes as input a session π term and draws the event structure corresponding to its interpretation.
Accepted syntax
The syntax follows that of the paper, with some adjustements:
P ::= (nu a b c ...) (P) { restriction } | a?INPUT-NAMES. P | a?INPUT-NAMES { input without label } | a?label INPUT-NAMES. P | a?label INPUT-NAMES { input with one branch with label } | a?{label1: NAMES: P; label2: NAMES: P; ... } { branching input } | a!OUTPUT-NAMES { output without label } | a!label OUTPUT-NAMES { output/selection } | P | Q { parallel composition } | P + Q { nondeterministic sum } INPUT-NAMES ::= { empty list } | (x, ..., z) { list of names } OUTPUT-NAMES ::= { empty list } | [x, ..., z] { list of names }The coname of a name x is denoted x'.
Type inference
Before computing the interpretation, the session types of each
channel is inferred, as types are necessary to compute the
interpretation (necessary when interpreting a channel
output).
Be careful about conames: if you want to represent communication
on a channel a, you need to need to use a on
one side, and a' on the other. (See the examples for
more details).
Translation
Conflict is drawn as a blue dotted line; otherwise the same convention as in the paper apply.