From Wikipedia, the free encyclopedia
  (Redirected from Talk:Pi-calculus)
Jump to: navigation, search
WikiProject Computing (Rated Start-class)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
WikiProject Computer science (Rated Start-class)
WikiProject icon This article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.
Note icon
This article has been automatically rated by a bot or other tool because one or more other projects use this class. Please ensure the assessment is correct before removing the |auto= parameter.

Naming - Why?[edit]

Why is it called pi calculus and what does it have to do with pi? — Preceding unsigned comment added by (talk) 15:11, 12 January 2015 (UTC)

(vx) notation[edit]

It seems that because v occurs in neither the bound names of (vx).P nor the free names of (vx).P, v is not a name/variable in (vx).P and is instead purely notational. If so, why is v chosen to play this role? And why then is v used as a variable in examples, when its double usage adds to confusion? Maybe I am misunderstanding the usage of v in (vx). Also I was wondering whether (vx), a(x), and a<x> are themselves members of the set of valid pi-calculus expressions as they seem to be only used as prefixes acting on P in the definition. My final confusion is the usage of the phrase "binds more closely" in the formal definition section, which I believe is meant to convey something about the order of application of operations in the pi-calculus. However this is vocabulary I am unfamiliar with.2600:1017:B10A:508F:B804:758C:BFF4:ABAF (talk) 18:35, 27 November 2017 (UTC)

Usefulness of pi-calculus?[edit]

Articles with a red discussion link are either very very good or substandard. It is as yet completely unclear to me how the pi-calculus can be used to do anything useful. It has the zero process. You can run two of them concurrently, but isn't 0|0 = 0 ? And also !0 = 0 ? How then do you build processes that _do_ anything? Or do you use lambda calculus for this? Also I am mystified by the deduction rule "if P -> Q then also P|E -> Q|E". And by the way -> is not explained anywhere. We have "if x<y>.P | x(z).Q, then also P | Q[y/z]" thus

(x<y>.P | x(z).Q) -> (P | Q[y/z]) implies

(x<y>.P | x(z).Q | x<a>.P) -> (P | Q[y/z] | x<a>.P) but also by symmetry

(x<y>.P | x(z).Q | x<a>.P) -> (P | Q[a/z] | x<y>.P) .

This does not seem right. Anyone? MarSch 16:06, 14 Apr 2005 (UTC)

As stated in the article, Pi-calculus in not a programming language; its purpose is to model concurrent processes. This end is achieved with creating and communicating names. I believe -> means "can be reduced to". Your example is absolutely right and contains no contradiction: you have three concurrent processes, two of which send a message on channel x, and one of them blocks waiting for a message on that channel. Obviously, the "listener" process can receive either one of the two messages, as illustrated by your example. -- 17:58, 2 May 2005 (UTC)

Not finished reading this interesting article yet, but I'd like to suggest changing the BNF syntax description for readability. The "|" sign is used in different meanings. It is used as the BNF "or" and in the Pi-calculus itself. I suggest changing one sign or quoting the blocks. -- Helmut 17:42, 19 December 2005 (UTC)

I’ve tried to make it a bit more readable without changing the | symbols. If it is sufficiently less ambiguous now, then the spacing hint should be better than a change of either grammar. (After all, formal definitions are supposed to make things clear, not confusing…)
However, I am a bit unsure about whether the grammar and the immediately subsequent discussion is entirely accurate. Rather than try to pick out inaccuracies (difficult for me due to not having enough knowledge about the topic), I’ll just ask whether it might be a good idea to make the formal definition more similar to the one in chapter 2 of Milner’s tutorial. I’ll see if I can get back to the article with a good book, but help is appreciated. --xyzzy_n 23:12, 16 February 2006 (UTC)

Shouldn't Occam-Pi be added to the implementations list? --Sergiu.dumitriu 01:36, 4 January 2006 (UTC)

Pi- and n-calculus[edit]

I'm confused - the article is supposed to discuss the pi-calculus, but half of it explain the n-calculus instead. Why? Which is which and how do they differ? -- 10:44, 25 January 2006 (UTC)

I believe you'll find that the article is discussing the π-calculus (as in the Greek letter pi), rather than the "n-calculus". Pi-calculus == π-calculus, but the latter is the form that π-calculus researchers like Milner, Parrow, and Sangiorgi tend to use, so that's what appears in this article. Perhaps it just isn't rendering well in your browser. --Allan McInnes 16:23, 25 January 2006 (UTC)

Parallel languages[edit]

The article states that the lambda calculus has been used to model parallel languages. While that may be true, in some strict sense, wouldn't it a better comparison with pi-calculus to say that lambda-calculus models _sequential_ programming languages? The preceding unsigned comment was added by (talk • contribs) .

I think you'll find that the article originally did say that, and was changed by User:CarlHewitt as part of what appears (to me) to be a campaign to make widely known his opinions about the relative capabilities of the Actor model and λ-calculus to model concurrency. I agree that "sequential programs" is less confusing — I'll switch it back now. --Allan McInnes 23:17, 28 January 2006 (UTC)

Notation for Early and Late bisimilarity unexplained.[edit]

The section on early and late bisimilarity left me lost, mainly, I believe because of the unexplained notation. Why is a(x) used sometimes and used other places?

For example:


And to what might the x in a(x) refer - especially as the text seems to talk about a binary relation?

I think you'll find that, if you look further up in the article, indicates that a value should be received through channel , and bound to the name in the following process. Thus the need to break out the bisimulation definition involving separately from the definitions for every other kind of action (every other kind of action being denoted ): the definition for actions requires the additional rule that , i.e. that p' and q' both perform the same substitution of received values (y) for previously unbound names (x).
I'm not sure it's a good idea to repeat the symbol definitions given in the syntax section again in the bisimilarity section. But if you feel that the surrounding text could explain things better, I'd be interested in hearing suggestions. --Allan McInnes (talk) 16:49, 13 June 2006 (UTC)

Recent cleanup[edit]

I cleaned up the presentation quite a bit. In particular, the presentation of structural congruence had become confusing, and as a consequence the account of the reduction semantics was close to meaningless. I also added a short example that should explain the finer points of name passing. If I find the time at some point, I will add a short section about type systems. HansHuttel 16:50, 5 Jul 2006 (UTC)

Errors in the examples[edit]

The section "The example revisited" seems to have extra open parentheses or be lacking close parentheses. I'm not confident enough in my grasp of the material to correct them, so could someone experienced take a look? --Lemur821 17:29, 6 August 2006 (UTC)

Thanks for noticing that! I’m no expert either, but it looked like there was a bad opening parenthesis, so I removed it. Does it work now? —xyzzyn 17:51, 6 August 2006 (UTC)

The examples are still wrong. The scope of the bindings for receives should extend to the closing parenthesis. That is,

should consider all free variables in to be replaced. This means that

should have been

I also suggest to explain scope extrusion in more detail.

Update: the bound variable scoping is clarified and the example is fine now in the revision. — Preceding unsigned comment added by Robert van Engelen (talkcontribs) 16:31, 22 December 2011 (UTC)

--Robert van Engelen 21:50, 6 December 2006 (UTC)


The article uses the term "continuation". However, continuations have a technical meaning in computer science. Is the word word use in this meaning? If not, I suggest that it be replaced by another word, or that the ambiguity be clarified. —The preceding unsigned comment was added by (talk) 14:42, 19 December 2006 (UTC).

The usage appears roughly similar to more general computer science. In a process X.P, where X is one of the defined process constructs (excluding nil), P is the continuation of X. The term could probably use more explanation in the context of pi calculus. (This is a naive guess based on how the term is used in the article, so I'm not going to edit the article to reflect this belief.) -- 06:20, 17 March 2007 (UTC)

The original poster is correct. I've removed the uses of the word continuation that I spotted. Clements (talk) 02:28, 28 October 2009 (UTC)

Error in ``FAQ on π-Calculus" (linked from this page)[edit]

I believe there is an error in ``FAQ on π-Calculus" (linked from this page), normally in this scenario I would contact the external page holder, however he is not the original author of the document so I will provide the information here.

I believe

3. Could you be a little more concrete?
a(x).P denotes a process that waits to read a value x from the channel a and then, having received it, behaves like P.

Should read:

a(x).P denotes a process that waits to read a value from the channel a stores it as x and then, having received it, behaves like P.

Or something similar —The preceding unsigned comment was added by (talk) 16:27, 5 January 2007 (UTC).

Barbed bisimulation[edit]

Is the symbol for barbed bisimulation displayed correctly? Shouldn't the be a bit larger? A part from that, the part on barbed congruence relation contained a typo. —The preceding unsigned comment was added by (talk) 08:16, 24 April 2007 (UTC).

Operator precedence[edit]

Would it be appropriate to include a table of operator precedence? As a novice, it took me a long time to figure out if should be parsed as or .

Suggestion for explanation of restriction operator[edit]

Here, the operator written (vx) is explained intuitively as "creation of a new name". Elsewhere (appendex A, definition 1; that paper is about modeling biological processes), I've seen it described as

"The restriction denotes a private channel x on which the two molecules can synchronise to split the complex."

I found this notion of (vx) creating a "private channel" helpful for my intuition and suggest that some phrase like that be added to the "Process constructs" where (vx) is introduced.

But I am just learning about the pi-calculus now, so I may not know what I'm talking about. I have not edited the actual page due to my ignorance. Bayle Shanks 07:25, 25 July 2007 (UTC)

Axioms for replication?[edit]

The article presents no structural congruence or reduction axioms for replication. Was something forgotten? Bayle Shanks 07:40, 25 July 2007 (UTC)

I noticed this too. It looks like it was mentioned as a note in the semantics of replication in an earlier revision, which was removed since there was already a semantics section above it (that didn't mention the congruence). I believe it makes more sense as a structural congruence axiom than a reduction axiom, so I have added it there. —Preceding unsigned comment added by (talk) 23:25, 28 December 2007 (UTC)

"full power of replication not needed"?[edit]

From the article:

The full power of replication !P is not needed. Often, one only considers replicated input...

Not needed for what? For Turing universality? Does replicated input suffice for Turing universality? Or is this a typo; should it be that "the full power of replication is often not needed"? Thanks, Bayle Shanks 07:45, 25 July 2007 (UTC)

Sangiorgi's result[edit]

If anyone has the citation for this, it would be neat to add it to the article. Thanks Bayle Shanks 07:51, 25 July 2007 (UTC)

Sangiorgi established the surprising result that the ability to pass processes does not increase the expressivity of the π-calculus: passing a process P can be simulated by just passing a name that points to P instead.

Section 1.2 "A small example" not helpful[edit]

It is not clear from the definition in the previous section how the examples work, and thus they convey no better understanding. I suspect what's missing is an explanation of the idea of computation in the pi calculus and how it differs from that of the languages deriving from the lambda calculus or register machine. For example, is the pi calculus a rewrite system like the lambda calculus? If so, how do you reduce terms? indil (talk) 08:05, 24 May 2008 (UTC)

The entry shows reduction rules for the pi-calculus. So: yes, the pi-calculus is a system like the lambda calculus, and you can reduce terms using the given reduction rules. Clements (talk) 02:48, 28 October 2009 (UTC)

goto c?[edit]

References to "goto c" appear in the section "Process constructs". What does this mean? Are you talking about goto in the context of languages like C, where "c" is some label or address? If so, that doesn't make sense according to what has been explained thus far in the article; what does instruction jumping have to do with passing values along links and binding names? indil (talk) 07:56, 23 October 2008 (UTC)

Compare pi-calculus and turing-machine.[edit]

How does pi-calculus compares to turing-machines? —Preceding unsigned comment added by (talk) 13:51, 2 September 2009 (UTC)

The article refers to work by Milner showing that the pi-calculus can model the lambda calculus. This implies that the pi-calculus is turing-complete. Clements (talk) 02:47, 28 October 2009 (UTC)

Requested move[edit]

Withdrawn, but moved so as to remove hyphen per discussion comments. --Cybercobra (talk) 03:54, 15 November 2009 (UTC)

Pi-calculusπ-calculus — We have the Unicode support to make this work, but it's hitting the title blacklist for some reason; I don't see why we can't give this its technically correct name. --Cybercobra (talk) 09:19, 13 November 2009 (UTC)

  • How about Pi calculus, like lambda calculus? Septentrionalis PMAnderson 15:09, 13 November 2009 (UTC)
  • I am not keen on "π-calculus" for an article title. It's not really necessary. I'm happy with Septentrionalis's suggestion. The notation "π" has led to confusion already (see Talk:Pi-calculus#Pi- and n-calculus). Plenty of people do use "pi calculus", for instance Matthew Hennessy's recent book, and Abadi and Fournet's "applied pi calculi". ComputScientist (talk) 16:03, 13 November 2009 (UTC)
  • Oppose the move. This is an example of excessive precision, and would only result in a difficult title. How is the average user supposed to write 'π-calculus' at all? On the other other hand Support a move towards Pi calculus (and keeping the other two as redirects). Flamarande (talk) 17:46, 13 November 2009 (UTC)
    • They wouldn't have to type it, there'd be a redirect obviously. --Cybercobra (talk) 09:23, 14 November 2009 (UTC)
      • The article should use the name more commonly used by the users (ie: the most common English name). In this particular case the letter "π" doesn't even appear in the English/Latin alphabet (and keyboards) at all making this case way even clearer. The users will always use 'Pi calculus' or something similar. Flamarande (talk) 02:50, 15 November 2009 (UTC)
  • Oppose I see no advantage in using Greek over English. (talk) 06:56, 14 November 2009 (UTC)

Need to disambiguate the syntax[edit]

The BNF does not make the priorities of the operators clear. Neither does it explain parentheses. —Preceding unsigned comment added by RJBotting (talkcontribs) 20:13, 3 October 2010 (UTC)

Good point, I've tried to clarify this. The BNF doesn't define concrete syntax, but abstract syntax. This is usual in process algebra, but you weren't to know. ComputScientist (talk) 09:13, 4 October 2010 (UTC)

Error in "Extensions and variants"[edit]

That section states that the asynchronous pi caclculus can simulate the standard ( synchronous) one. This seems to be disproven by a 1997 POPL article: — Preceding unsigned comment added by Ringesherre (talkcontribs) 18:48, 1 July 2012 (UTC)