[Redux] The Polyadic pi-Calculus: a Tutorial (1991) Robin Milner

The paper The Polyadic pi-Calculus: a Tutorial (1991) by Robin Milner doesn't appear to have been mentioned on the front page previously of LtU before. I think it is worth pointing to for beginners, since it appears to do a good job of covering the basics of pi-Calculus.

Abstract: The pi-calculus is a model of concurrent computation based upon the notion of naming . It is first presented in its simplest and original form, with the help of several illustrative applications. Then it is generalized from monadic to polyadic form. Semantics is done in terms of both a reduction system and a version of labelled transitions called commitment ; the known algebraic axiomatization of strong bisimilarity is given in the new setting, and so also is a characterization in modal logic....

For those fairly new to the group, pi-calculus is a formal calculus for studying concurrent computation. This would be a good thread for others not only to comment on this paper, but to mention other good entry points for the study of concurrency, and other calculi related to the pi-calculus.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

The T &L department is for

The T &L department is for items related to programming language education issues. Please use the department related to the subject of the papers you want to discuss, when posting [Redux] messages (in this cases the Parallel/Distributed department, for example).

I've just done that. Perhaps

I've just done that. Perhaps it would be more clear to call the teaching and learning department the programming language education department? I am sure many others have made the same mistake as I did. Alternatively I would like to also propose a "tutorials" department.

I think departments should

I think departments should be about topics, not genres.

It pays to check the archives, and learn more about the culture, instead of making assumptions. You can also simply ask me, if something raises a question.

Fine. I will refrain from

It pays to check the archives, and learn more about the culture, instead of making assumptions.

I think it is a very reasonable thing to assume that a section titled "Teaching and Learning" was appropriate for submitting tutorials.

[Edit: removed reactionary statements.]

[Community] A neutral reading

Since you clearly aren't appreciative of my contributions as editor then I will restrict my contributions from here on in, to the forums.

Um, perhaps there is something I'm misunderstanding, but as a relatively neutral bystander, I didn't read Ehud's post as anything other than a straight-forward explanation of what the categories mean.

Sometimes in this medium it is all too easy to read in subtext where there may not be any. (I'm sure I've done so myself many times over the years... ;-))

Something to consider...

[Community] As another neutral bystander

Um, perhaps there is something I'm misunderstanding, but as a relatively neutral bystander, I didn't read Ehud's post as anything other than a straight-forward explanation of what the categories mean.

I read it otherwise.

I am, of course,

I am, of course, appreciative of all contributions. As is also pretty much obvious, my opinion is not the voice of the entire community, so whether I am appreciative shouldn't really be the issue.

However, being one of the oldest members, I do tend to stress that we have some traditions, which may make some sense, and I think one should consider what their logic is or was before suggesting changes. I also think that we have 5.5 years of archives, so changing department names etc. without very good reasons isn't a very good idea. It will just add confusion.

I also suggest that discussions about the site, will not be inside the threads dedicated to specific papers etc. We can move them to email, or to the site discussions forum.

CSP

Tony Hoare's Communicating Sequential Processes probably falls under the heading "related calculi", although it's more closely related to Milner's earlier Calculus of Communicating Systems (from which the pi-calculus inherits much). Unlike the pi-calculus, CSP doesn't include mobility (although various circumlocutions can be used to model mobility in CSP) but does include a far richer set of operators than pi-calculus.

CSP theory provides both an operational and an algebraic semantics, as well as several different denotational models which allow different distinctions between processes to be made. Commercially supported tools for analysis and verification are available. CSP has been applied in an industrial setting (most notably in the development of the Transputer, but also by companies such as Daimler-Benz Aerospace and Praxis High-Integrity Systems).

On the PLT front, CSP is interesting because it directly influenced the occam concurrent programming language (and more recently occam-pi - although that's also influenced by the pi-calculus), as well as having some influence on -- among others -- Ada, Squeak (Pike and Cardelli's one, not the Smalltalk), Alef and Limbo (for the Bell Labs Plan 9 OS), and Stackless Python, along with languages for asynchronous logic design like Tangram and Balsa.

Thinking in CSP

CSP also provides an intuitive abstraction that you can use to understand how to organise concurrent activities in a program. I haven't used CSP in any formal way but reading (and rereading) the book has profoundly affected the way I write programs. I think that to create a new abstraction that people can "think in" while writing programs is about the best contribution a computer scientist can make to the world.

Indeed

I haven't used CSP in any formal way but reading (and rereading) the book has profoundly affected the way I write programs.

I have used CSP in a formal way on a few projects, and it's been a useful tool. But I agree that it's also very useful just as a mental model for understanding concurrency. I've run across several situations where simply translating a problem into CSP concepts (not necessarily a formal model) has clarified where the problems lay - no need for elaborate verification, just clear thought.

Interesting pi-calculus application

One of the more interesting applications of the pi-calculus that I've come across recently is as a language for systems biology.

Meh...

I spent some time learning about CCS type stuff towards seeing if it could be applied to biology/chemistry and found it all rather sterile...none of it is really being used to generate new knowledge (IMHO).

The biology and chemistry needs to motivate the construction of things like pi-calculus; it doesn't do much when you push the otherway around.

Thanks

I've been interested in Milner since I accidentally picked up his book on CCS thinking it was something else. Anyway, I've been meaning to look at the Pi Calculus stuff, and this is a great start for me.