James J. Leifer

Learn More
The dynamics of process calculi, e.g. CCS, have often been defined using a labelled transition system (LTS). More recently it has become common when defining dynamics to use reaction rules —i.e. unlabelled transition rules— together with a structural congruence. This form, which I call a reactive system, is highly expressive but is limited in an important(More)
link graphs, which were introduced in Definition 3.23, consist of lean-support equivalence classes of concrete link graphs; that is, they forget the identity of nodes and edges. As promised in Section 2.3 and at the end of Section 3.2, we now provide an example to show that RPOs do not always exist in abstract link graphs. J. J. Leifer and R.Milner 56
Existing languages provide good support for typeful programming of standalone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (but not necessarily all) of their module structure, and with some instances rebuilt with new versions of certain modules as time goes on. In(More)
Distributed applications can be structured as parties that exchange messages according to some pre-arranged communication patterns. These sessions (or contracts, or protocols) simplify distributed programming: when coding a role for a given session, each party just has to follow the intended message flow, under the assumption that the other parties are also(More)
The dynamics of process calculi, e.g. CCS, have often been defined using a labelled transition system (LTS). More recently it has become common when defining dynamics to use reaction rules —i.e. unlabelled transition rules— together with a structural congruence. This form, which I call a reactive system, is highly expressive but is limited in an important(More)
We present the design and implementation of a compiler that, given high-level multiparty session descriptions, generates custom cryptographic protocols. Our sessions specify pre-arranged patterns of message exchanges and data accesses between distributed participants. They provide each participant with strong security guarantees for all their messages. Our(More)
Distributed applications can be structured as parties that exchange messages according to some pre-arranged communication patterns. These sessions (or contracts, or protocols) simplify distributed programming: when coding a role for a given session, each party just has to follow the intended message flow, under the assumption that the other parties are also(More)
This paper is the second in a series of two. It relies on its companion, Part 1, to motivate the central problem addressed by the series, namely: how to synthesise labelled transitions for reactive systems and how to prove congruence results for operational equivalences and preorders defined above those transitions. The purpose of this paper is (i) to show(More)