Fusion Machine.

Lucian Wischik. Work in progress.

Instructions. 

Type in an expression into the java applet and click the Step button to watch it execute! For example, u<x> | u(y).y<> or u<x> | !u(y).

Language quick-reference. 


 P ::= x<y>.P  or  x!y.P  or  x!P  output
       x(y).P  or  x?y.P  or  x?P  input of bound or free name
       P | Q                       two things running concurrently
       P + Q                       choice of one or the other
       (nu x)P                     name x is local
       <x=y>                       explicit fusion
       <x>                         datum
       P @ Q                       application -- fuses datums
       !P                          replication
The machine can perform reaction steps -> using the rule x!P | x?Q -> P@Q. It can also perform equivalence steps ==, generally to do a substitution or garbage collection. (In case you're wondering why it translates your expression into a weird form—that's because all the operators are simplistic derived ones that operate upon normal forms.)

Abstract. 

The pi calculus is a calculus for mobility, distribution and parallel interaction. We describe a virtual machine which is also distributed and parallel. (In contrast, the existing Pict virtual machine is non-distributed and non-parallel). Key properties of our virtual machine are: (1) explicit fusions are what allow it to be distributed; (2) the agents that execute are channel names, not processes; (3) mobility is alpha-conversion; (4) the main computational work is replication and non communication
Note: We've taken a few shortcuts in the java applet virtual machine above. Instead of being distributed between machines, it is only distributed among threads. And instead of being distributed among threads, each name gets executed in turn by just a single thread.
  • Draft paper on the machine implementation (PDF), 6 pages
  • Conference paper "Explicit Fusions" on the theory behind the machine