Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Calculus of communicating systems
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Refimprove|date=November 2011}} The '''calculus of communicating systems''' ('''CCS''') is a [[process calculus]] introduced by [[Robin Milner]] around 1980 and the title of a book describing the calculus. Its actions model indivisible communications between exactly two participants. The formal language includes primitives for describing parallel composition, summation between actions and scope restriction. CCS is useful for evaluating the qualitative correctness of properties of a system such as [[Deadlock (computer science)|deadlock]] or [[livelock]].<ref>{{cite book |editor1-first=Ulrich |editor1-last=Herzog |title=Formal Methods for Performance Evaluation |access-date=2009-04-21 |series=Lecture Notes in Computer Science |volume=4486 |date=May 2007 |publisher=Springer |doi=10.1007/978-3-540-72522-0 |pages=318–370 |chapter=Tackling Large State Spaces in Performance Modelling |chapter-url=http://aesop.doc.ic.ac.uk/pubs/large-state-spaces/ |isbn=978-3-540-72482-7 |archive-date=2008-04-12 |archive-url=https://web.archive.org/web/20080412014710/http://aesop.doc.ic.ac.uk/pubs/large-state-spaces/ |url-status=dead }}</ref> According to Milner, "There is nothing canonical about the choice of the basic combinators, even though they were chosen with great attention to economy. What characterises our calculus is not the exact choice of combinators, but rather the choice of interpretation and of mathematical framework". The expressions of the language are interpreted as a [[state transition system|labelled transition system]]. Between these models, [[bisimilarity]] is used as a semantic equivalence. __TOC__ ==Syntax== Given a set of action names, the set of CCS processes is defined by the following [[BNF grammar]]: :<math>P ::= 0\,\,\, | \,\,\,a.P_1\,\,\, | \,\,\,A\,\,\, | \,\,\,P_1+P_2\,\,\, | \,\,\,P_1|P_2\,\,\, | \,\,\,P_1[b/a]\,\,\, | \,\,\,P_1{\backslash}a\,\,\,</math> The parts of the syntax are, in the order given above ; inactive process : the inactive process <math>0</math> is a valid CCS process ; action : the process <math>a.P_1</math> can perform an action <math>a</math> and continue as the process <math>P_1</math> ; process identifier : write <math>A \overset{\underset{\mathrm{def}}{}}{=} P_1</math> to use the identifier <math>A</math> to refer to the process <math>P_1</math> (which may contain the identifier <math>A</math> itself, i.e., recursive definitions are allowed) ; summation : the process <math>P_1+P_2</math> can proceed either as the process <math>P_1</math> or the process <math>P_2</math> ; parallel composition : <math>P_1|P_2</math> tells that processes <math>P_1</math> and <math>P_2</math> exist simultaneously ; renaming : <math>P_1[b/a]</math> is the process <math>P_1</math> with all actions named <math>a</math> renamed as <math>b</math> ; restriction : <math>P_1{\backslash}a</math> is the process <math>P_1</math> without action <math>a</math> ==Related calculi, models, and languages== * [[Communicating sequential processes]] (CSP), developed by [[Tony Hoare]], is a formal language that arose at a similar time to CCS. * The [[Algebra of Communicating Processes]] (ACP) was developed by [[Jan Bergstra]] and [[Jan Willem Klop]] in 1982, and uses an axiomatic approach (in the style of [[Universal algebra]]) to reason about a similar class of processes as CCS. * The [[pi-calculus]], developed by [[Robin Milner]], Joachim Parrow, and David Walker in the late 80's extends CCS with mobility of communication links, by allowing processes to communicate the names of communication channels themselves. * [[PEPA]], developed by [[Jane Hillston]] introduces activity timing in terms of exponentially distributed rates and probabilistic choice, allowing performance metrics to be evaluated. * Reversible Communicating Concurrent Systems (RCCS) introduced by [[Vincent Danos]], [[Jean Krivine]], and others, introduces (partial) reversibility in the execution of CCS processes. Some other languages based on CCS: * [[Calculus of broadcasting systems]] * [[Language Of Temporal Ordering Specification]] (LOTOS) * [[Process Calculus for Spatially-Explicit Ecological Models]] (PALPS) is an extension of CCS with probabilistic choice, locations and attributes for locations<ref> A Philippou, M Toro, M Antonaki. Simulation and Verification in a Process Calculus for Spatially-Explicit Ecological Models. Scientific Annals of Computer Science 23 (1). 2014</ref> *[[Jolie (programming language)|Java Orchestration Language Interpreter Engine]] (Jolie)<ref>{{Cite journal |last=Montesi |first=Fabrizio |last2=Guidi |first2=Claudio |last3=Lucchi |first3=Roberto |last4=Zavattaro |first4=Gianluigi|date=2007-06-27|title=JOLIE: a Java Orchestration Language Interpreter Engine|journal=Electronic Notes in Theoretical Computer Science |series=Combined Proceedings of the Second International Workshop on Coordination and Organization (CoOrg 2006) and the Second International Workshop on Methods and Tools for Coordinating Concurrent, Distributed and Mobile Systems (MTCoord 2006) |volume=181 |pages=19β33|doi=10.1016/j.entcs.2007.01.051 |issn=1571-0661|doi-access=free }}</ref> Models that have been used in the study of CCS-like systems: * [[History monoid]] * [[Actor model]] ==References== * Robin Milner: ''A Calculus of Communicating Systems'', Springer Verlag, {{ISBN|0-387-10235-3}}. 1980. * Robin Milner, ''Communication and Concurrency'', Prentice Hall, International Series in Computer Science, {{ISBN|0-13-115007-3}}. 1989 {{Reflist}} {{DEFAULTSORT:Calculus of communicating systems}} {{Concurrent computing}} [[Category:1980 in computing]] [[Category:Process calculi]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Concurrent computing
(
edit
)
Template:ISBN
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)