SePi is a concurrent, message-passing programming language based on the pi-calculus. The language features synchronous, bi-directional channel-based communication between concurrent processes.
Programs use primitives to send and receive messages and control instructions that operate on channels and govern their protocol behaviour. Interactions on channels 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 on the properties of programs, SePi includes assume and assert primitives at the process level and refinements at the type level. Refinements are treated linearly, which allows a finer, resource-oriented use: each part of an assumption made with linear mode supports exactly one part of an assertion.
See more about SePi.
Or try it online