James Bound, a depth-bounded π-calculus playground
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



This repository contains an Haskell package, picalc, and an executable jb, short for "James Bound". It defines data structures and functions for the representation of the syntax and operational semantics of the π-calculus, and its depth-bounded fragment (hence the name).

For more information about π-calculus see https://en.wikipedia.org/wiki/Pi_calculus.

Other (more theoretical) references for a quick introduction are

The analysis implemented by James Bound is a variation over the type system described in

This module is not intended to define a π-calculus style embedded domain specific language but rather to represent, transform, analyse and interpret π-calculus terms. For this reason the interpretation is not tuned for speed and it is not meant to be used for executing systems but rather to explore the semantics of the terms.

The current version is to be considered experimental and simply a playground for experimenting with π-calculus.


This code is released under GPLv2 but in the spirit of the CRAPL:

Science thrives on openness.

In modern science, it is often infeasible to replicate claims without access to the software underlying those claims.

Let's all be honest: when scientists write code, aesthetics and software engineering principles take a back seat to having running, working code before a deadline.

So, let's release the ugly. And, let's be proud of that.


The jb program can be compiled by running

cabal build

from the top directory of the repository.

Syntax of the language

PiCalc implements a variant of polyadic π-calculus. Its syntax is defined in the wiki and the SYNTAX.md file.