SePi is a concurrent, message-passing programming language based on the pi-calculus. The language features synchronous, bi-directional channel-based communication.

Programs use primitives to send and receive messages as well as offer and select choices. Channel interactions are statically verified against session types describing the kind and order of messages exchanged, as well as the number of processes that may share a channel.

In order to facilitate a more precise control of program properties, SePi includes assume and assert primitives at the process level and refinements at the type level. Refinements are treated linearly, allowing a finer, resource-oriented use of predicates: each assumption made supports exactly one an assertion.




Download and Installation

Using the Eclipse plugin


An Eclipse IDE for Java and DSL Developers. Browse the list of packages down, looking for ‘Eclipse IDE for Java and DSL Developers’.

Installing the Eclipse SePi Plugin

  • In Eclipse go to the Help menu → Install New Software…
  • Type in the update site in the work with field and press Enter;
  • Select SePi SDK Feature;
  • Press the Next button and follow the installation instructions. Also, trust us and accept the unsigned plugin;
  • Restart Eclipse. The installation is now complete.

My first SePi Eclipse project

  • Create a new project and a new file with extension .pi;
  • The editor asks whether you want to add the Xtext nature to your project. Select yes;
  • Write your program (some examples);
  • In the editor, use left button → Interpret to run your program.

Running SePi in the command line


Running your program

  • Download SePi.jar;
  • Create a new file with extension .pi and write your program (some examples);
  • Interpret the program using the command: java -jar SePi.jar yourProgram.pi.