Actor model and process calculi
   HOME

TheInfoList



OR:

In
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
, the
Actor model The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more ...
and
process calculi In computer science, the process calculi (or process algebras) are a diverse family of related approaches for formally modelling concurrent systems. Process calculi provide a tool for the high-level description of interactions, communications, and ...
are two closely related approaches to the modelling of concurrent digital computation. See
Actor model and process calculi history The actor model and process calculus, process calculi share an interesting history and co-evolution. Early work The Actor model, first published in 1973, is a mathematical model of concurrent computation. The Actor model treats "Actors" as the univ ...
. There are many similarities between the two approaches, but also several differences (some philosophical, some technical): *There is only one
Actor model The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more ...
(although it has numerous formal systems for design, analysis, verification, modeling, ''etc.''); there are numerous
process calculi In computer science, the process calculi (or process algebras) are a diverse family of related approaches for formally modelling concurrent systems. Process calculi provide a tool for the high-level description of interactions, communications, and ...
, developed for reasoning about a variety of different kinds of concurrent systems at various levels of detail (including calculi that incorporate time, stochastic transitions, or constructs specific to application areas such as security analysis). *The Actor model was inspired by the laws of
physics Physics is the natural science that studies matter, its fundamental constituents, its motion and behavior through space and time, and the related entities of energy and force. "Physical science is that department of knowledge which r ...
and depends on them for its fundamental axioms, ''i.e.''
physical law Scientific laws or laws of science are statements, based on repeated experiments or observations, that describe or predict a range of natural phenomena. The term ''law'' has diverse usage in many cases (approximate, accurate, broad, or narrow) a ...
s (see Actor model theory); the process calculi were originally inspired by
algebra Algebra () is one of the broad areas of mathematics. Roughly speaking, algebra is the study of mathematical symbols and the rules for manipulating these symbols in formulas; it is a unifying thread of almost all of mathematics. Elementary a ...
. *Processes in the process calculi are anonymous, and communicate by sending messages either through named
channels Channel, channels, channeling, etc., may refer to: Geography * Channel (geography), in physical geography, a landform consisting of the outline (banks) of the path of a narrow body of water. Australia * Channel Country, region of outback Austral ...
(synchronous or asynchronous), or via ambients (which can also be used to model channel-like communications ). In contrast, actors in the Actor model possess an identity, and communicate by sending messages to the mailing addresses of other actors (this style of communication can also be used to model channel-like communications—see below). The publications on the Actor model and on process calculi have a fair number of cross-references, acknowledgments, and reciprocal citations (see
Actor model and process calculi history The actor model and process calculus, process calculi share an interesting history and co-evolution. Early work The Actor model, first published in 1973, is a mathematical model of concurrent computation. The Actor model treats "Actors" as the univ ...
).


How channels work

Indirect communication using channels (''e.g.'' Gilles Kahn and David MacQueen
977 Year 977 ( CMLXXVII) was a common year starting on Monday (link will display the full calendar) of the Julian calendar. Events By place Europe * May – Boris II, dethroned emperor (''tsar'') of Bulgaria, and his brother Roman ma ...
has been an important issue for communication in parallel and concurrent computation affecting both semantics and performance. Some process calculi differ from the Actor model in their use of channels as opposed to direct communication.


Synchronous channels

Synchronous channels have the property that a sender putting a message in the channel must wait for a receiver to get the message out of the channel before the sender can proceed.


Simple synchronous channels

A synchronous channel can be modeled by an Actor that receives put and get communications. The following is the behavior of an Actor for a simple synchronous channel: *Each put communication has a message and an address to which an acknowledgment is sent when the message is received by a get communication from the channel in FIFO order. *Each get communication has an address to which the received message is sent.


Synchronous channels in process calculi

However, simple synchronous channels do not suffice for process calculi such as
Communicating Sequential Processes In computer science, communicating sequential processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. It is a member of the family of mathematical theories of concurrency known as process algebras, or pro ...
(CSP) oare 1978 and 1985because use of the ''guarded choice'' (after Dijkstra) command (called the ''alternative'' command in CSP). In a guarded choice command multiple offers (called guards) can be made concurrently on multiple channels to put and get messages; however at most one of the guards can be chosen for each execution of the guarded choice command. Because only one guard can be chosen, a guarded choice command in general effectively requires a kind of
two-phase commit protocol In transaction processing, databases, and computer networking, the two-phase commit protocol (2PC) is a type of atomic commitment protocol (ACP). It is a distributed algorithm that coordinates all the processes that participate in a distributed a ...
or perhaps even a
three-phase commit protocol In computer networking and databases, the three-phase commit protocol (3PC) is a distributed algorithm which lets all nodes in a distributed system agree to commit a transaction. It is a more failure-resilient refinement of the two-phase commit p ...
if time-outs are allowed in guards (as in Occam 3
992 Year 992 ( CMXCII) was a leap year starting on Friday (link will display the full calendar) of the Julian calendar. Events By place Worldwide * Winter – A superflare from the sun causes an Aurora Borealis, with visibility as fa ...
. Consider the following program written in CSP oare 1978 , Y :: guard: boolean; guard := true; * , Z :: n: integer; n:= 0; * ?stop()_ → _Y!false;_print!n; __________[Y?go()_ → _n_:=_n+1;_Y!true_.html" ;"title="/a>Y?go()  →  n := n+1; Y!true">?stop()  →  Y!false; print!n; [Y?go()  →  n := n+1; Y!true ">/a>Y?go()  →  n := n+1; Y!true">?stop()  →  Y!false; print!n; [Y?go()  →  n := n+1; Y!true According to Clinger [1981], this program illustrates global nondeterminism, since the nondeterminism arises from incomplete specification of the timing of signals between the three processes X, Y, and Z. The repetitive guarded command in the definition of Z has two alternatives: #the stop message is accepted from X, in which case Y is sent the value false and print is sent the value n #a go message is accepted from Y, in which case n is incremented and Y is sent the value true. If Z ever accepts the stop message from X, then X terminates. Accepting the stop causes Y to be sent false which when input as the value of its guard will cause Y to terminate. When both X and Y have terminated, Z terminates because it no longer has live processes providing input. In the above program, there are synchronous channels from X to Z, Y to Z, and Z to Y.


Analogy with the committee coordination problem

According to Knabe
992 Year 992 ( CMXCII) was a leap year starting on Friday (link will display the full calendar) of the Julian calendar. Events By place Worldwide * Winter – A superflare from the sun causes an Aurora Borealis, with visibility as fa ...
Chandy and Misra 988characterized this as analogous to the committee coordination problem: :Professors in a university are assigned to various committees. Occasionally a professor will decide to attend a meeting of any of her committees, and will wait until that is possible. Meetings may begin only if there is full attendance. The task is to ensure that if all the members of a committee are waiting, then at least one of them will attend some meeting. :The crux of this problem is that two or more committees might share a professor. When that professor becomes available, she can only choose one of the meetings, while the others continue to wait.


A simple distributed protocol

This section presents a simple distributed protocol for channels in synchronous process calculi. The protocol has some problems that are addressed in the sections below. The behavior of a guarded choice command is as follows: *The command sends a message to each of its guards to prepare. *When it receives the first response from one of its guards that it is prepared, then it sends a message to that guard to prepare to commit and sends messages to all of the other guards to abort. **When it receives a message from the guard that it is prepared to commit, then it sends the guard a commit message. However, if the guard throws an exception that it cannot prepare to commit, then guarded choice command starts the whole process all over again. *If all of its guards respond that they cannot prepare, then the guarded command does nothing. The behavior of a guard is as follows: *When a message to prepare is received, then the guard sends a prepare message to each of the channels with which it is offering to communicate. If the guard has booleans such that it cannot prepare or if any of the channels respond that they cannot prepare, then it sends abort messages to the other channels and then responds that it cannot prepare. **When a message to prepare to commit is received, then the guard sends a prepare to commit message to each of the channels. If any of the channels respond that they cannot prepare to commit, then it sends abort messages to the other channels and then throws an exception that it cannot prepare to commit. **When a message to commit is received, then the guard sends a commit message to each of the channels. **When a message to abort is received, then the guard sends an abort message to each of the channels. The behavior of a channel is as follows: *When a prepare to put communication is received, then respond that it is prepared if there is a prepare to get communication pending unless a terminate communication has been received, in which case throw an exception that it cannot prepare to put. *When a prepare to get communication is received, then respond that it is prepared if there is a prepare to put communication pending unless a terminate communication has been received, in which case throw an exception that it cannot prepare to get. **When a prepare to commit to put communication is received, then respond that it is prepared if there is a prepare to commit to get communication pending unless a terminate communication has been received, in which case throw an exception that it cannot prepare to commit to put. **When a prepare to commit to get communication is received, then respond that it is prepared if there is a prepare to commit to put communication pending unless a terminate communication has been received, in which case throw an exception that it cannot prepare to commit to get. ***When a commit put communication is received, then depending on which of the following is received: ****When a commit get communication is received, then if not already done perform the put and get and clean up the preparations. ****When an abort get communication is received, then cancel the preparations ***When a commit get communication is received, then depending on which of the following is received: ****When a commit put communication is received, then if not already done perform the get and put and clean up the preparations. ****When an abort put communication is received, then cancel the preparations. ***When an abort put communication is received, then cancel the preparations. ***When an abort get communication is received, then cancel the preparations.


Starvation on getting from multiple channels

Again consider the program written in CSP (discussed in Synchronous channels in process calculi above): , Y :: guard: boolean; guard := true; * , Z :: n: integer; n:= 0; * ?stop()_ → _Y!false;_print!n; __________[Y?go()_ → _n_:=_n+1;_Y!true_.html"_;"title="/a>Y?go()_ → _n_:=_n+1;_Y!true">?stop()_ → _Y!false;_print!n; __________[Y?go()_ → _n_:=_n+1;_Y!true_">/a>Y?go()_ → _n_:=_n+1;_Y!true">?stop()_ → _Y!false;_print!n; __________[Y?go()_ → _n_:=_n+1;_Y!true_ As_pointed_out_in_Knabe_992_ Year_992_(_CMXCII)_was_a_leap_year_starting_on_Friday_(link_will_display_the_full_calendar)_of_the_Julian_calendar. __Events_ __By_place_ __Worldwide_ *_Winter_–_A_superflare_from_the_sun_causes_an_Aurora_Borealis,_with_visibility_as_fa_...
_a_problem_with_the_above_protocol_(Actor_model_and_process_calculi#A_simple_distributed_protocol.html" ;"title="/a>Y?go()_ → _n_:=_n+1;_Y!true.html" ;"title="?stop()  →  Y!false; print!n; ?stop()_ → _Y!false;_print!n; __________
?stop()_ → _Y!false;_print!n; __________[Y?go()_ → _n_:=_n+1;_Y!true_">/a>Y?go()_ → _n_:=_n+1;_Y!true">?stop()_ → _Y!false;_print!n; __________[Y?go()_ → _n_:=_n+1;_Y!true_ As_pointed_out_in_Knabe_992_ Year_992_(_CMXCII)_was_a_leap_year_starting_on_Friday_(link_will_display_the_full_calendar)_of_the_Julian_calendar. __Events_ __By_place_ __Worldwide_ *_Winter_–_A_superflare_from_the_sun_causes_an_Aurora_Borealis,_with_visibility_as_fa_...
_a_problem_with_the_above_protocol_(Actor_model_and_process_calculi#A_simple_distributed_protocol">A_simple_distributed_protocol)_is_that_the_process_Z_might_never_accept_the_stop_message_from_X_(a_phenomenon_called_Resource_starvation.html" "title="/a>Y?go()_ → _n_:=_n+1;_Y!true_.html" ;"title="/a>Y?go()  →  n := n+1; Y!true">?stop()  →  Y!false; print!n; [Y?go()  →  n := n+1; Y!true ">/a>Y?go()  →  n := n+1; Y!true">?stop()  →  Y!false; print!n; [Y?go()  →  n := n+1; Y!true As pointed out in Knabe
992 Year 992 ( CMXCII) was a leap year starting on Friday (link will display the full calendar) of the Julian calendar. Events By place Worldwide * Winter – A superflare from the sun causes an Aurora Borealis, with visibility as fa ...
a problem with the above protocol (Actor model and process calculi#A simple distributed protocol">A simple distributed protocol) is that the process Z might never accept the stop message from X (a phenomenon called Resource starvation">starvation Starvation is a severe deficiency in caloric energy intake, below the level needed to maintain an organism's life. It is the most extreme form of malnutrition. In humans, prolonged starvation can cause permanent organ damage and eventually, dea ...
) and consequently the above program might never print anything. In contrast consider, a simple Actor system that consists of Actors X, Y, Z, and print where *the Actor X is created with the following behavior: **If the message "start" is received, then send Z the message "stop" *the Actor Y is created with the following behavior: **If the message "start" is received, then send Z the message "go" **If the message true is received, then send Z the message "go" **If the message false is received, then do nothing *the Actor Z is created with the following behavior that has a count n that is initially 0: **If the message "start" is received, then do nothing. **If the message "stop" is received, then send Y the message false and send print the message the count n. **If the message "go" is received, then send Y the message true and process the next message received with count n being n+1. By the laws of Actor semantics, the above Actor system will always halt when the Actors X, Y, are Z are each sent a "start" message resulting in sending print a number that can be unbounded large. The difference between the CSP program and the Actor system is that the Actor Z does not get messages using a guarded choice command from multiple channels. Instead it processes messages in arrival ordering, and by the laws for Actor systems, the stop message is guaranteed to arrive.


Livelock on getting from multiple channels

Consider the following program written in CSP oare 1978 [Bidder1 :: b: bid; *[Bids1?b  →  process1!b; [] Bids2?b  →  process1!b;] , , Bidder2 :: b: bid; *[Bids1?b  →  process2!b; [] Bids2?b  →  process2!b;] ] As pointed out in Knabe
992 Year 992 ( CMXCII) was a leap year starting on Friday (link will display the full calendar) of the Julian calendar. Events By place Worldwide * Winter – A superflare from the sun causes an Aurora Borealis, with visibility as fa ...
an issue with the above protocol ( A simple distributed protocol) is that the process Bidder2 might never accept a bid from Bid1 or Bid2 (a phenomenon called
livelock In concurrent computing, deadlock is any situation in which no member of some group of entities can proceed because each waits for another member, including itself, to take action, such as sending a message or, more commonly, releasing a loc ...
) and consequently process2 might never be sent anything. In each attempt to accept a message, Bidder2 is thwarted because the bid that was offered by Bids1 or Bids2 is snatched away by Bidder1 because it turns out that Bidder1 has much faster access than Bidder2 to Bids1 and Bids2. Consequently, Bidder1 can accept a bid, process it and accept another bid before Bidder2 can commit to accepting a bid.


Efficiency

As pointed out in Knabe
992 Year 992 ( CMXCII) was a leap year starting on Friday (link will display the full calendar) of the Julian calendar. Events By place Worldwide * Winter – A superflare from the sun causes an Aurora Borealis, with visibility as fa ...
an issue with the above protocol ( A simple distributed protocol) is the large number of communications that must be sent in order to perform the handshaking in order to send a message through a synchronous channel. Indeed, as shown in the previous section (
Livelock In concurrent computing, deadlock is any situation in which no member of some group of entities can proceed because each waits for another member, including itself, to take action, such as sending a message or, more commonly, releasing a loc ...
), the number of communications can be unbounded.


Summary of Issues

The subsections above have articulated the following three issues concerned with the use of synchronous channels for process calculi: #''Starvation.'' The use of synchronous channels can cause starvation when a process attempts to get messages from multiple channels in a guarded choice command. #''Livelock.'' The use of synchronous channels can cause a process to be caught in livelock when it attempts to get messages from multiple channels in a guarded choice command. #''Efficiency.'' The use of synchronous channels can require a large number of communications in order to get messages from multiple channels in a guarded choice command. It is notable that in all of the above, issues arise from the use of a guarded choice command to get messages from multiple channels.


Asynchronous channels

Asynchronous channels have the property that a sender putting a message in the channel need not wait for a receiver to get the message out of the channel.


Simple asynchronous channels

An asynchronous channel can be modeled by an Actor that receives put and get communications. The following is the behavior of an Actor for a simple asynchronous channel: *Each put communication has a message and an address to which an acknowledgment is sent immediately (without waiting for the message to be gotten by a get communication). *Each get communication has an address to which the gotten message is sent.


Asynchronous channels in process calculi

The Join-calculus programming language (published in 1996) implemented local and distributed concurrent computations. It incorporated asynchronous channels as well as a kind of synchronous channel that is used for procedure calls. Agha's Aπ Actor calculus is based on a typed version of the asynchronous
π-calculus In theoretical computer science, the -calculus (or pi-calculus) is a process calculus. The -calculus allows channel names to be communicated along the channels themselves, and in this way it is able to describe concurrent computations whose networ ...
.


Algebras

The use of algebraic techniques was pioneered in the process calculi. Subsequently, several different process calculi intended to provide algebraic reasoning about Actor systems have been developed in , , .


Denotational semantics

Will Clinger (building on the work of Irene Greif
975 Year 975 ( CMLXXV) was a common year starting on Friday (link will display the full calendar) of the Julian calendar. Events By place Byzantine Empire * Arab–Byzantine War: Emperor John I raids Mesopotamia and invades Syria, using ...
Gordon Plotkin
976 Year 976 ( CMLXXVI) was a leap year starting on Saturday (link will display the full calendar) of the Julian calendar. Events By place Byzantine Empire * January 10 – Emperor John I Tzimiskes dies at Constantinople, after re ...
Henry Baker
978 Year 978 ( CMLXXVIII) was a common year starting on Tuesday (link will display the full calendar) of the Julian calendar. Events By place Byzantine Empire * Battle of Pankaleia: Rebel forces under General Bardas Skleros are defeated ...
Michael Smyth
978 Year 978 ( CMLXXVIII) was a common year starting on Tuesday (link will display the full calendar) of the Julian calendar. Events By place Byzantine Empire * Battle of Pankaleia: Rebel forces under General Bardas Skleros are defeated ...
and Francez, Hoare, Lehmann, and de Roever
979 Year 979 ( CMLXXIX) was a common year starting on Wednesday (link will display the full calendar) of the Julian calendar. Events By place Byzantine Empire * March 24 – Second Battle of Pankaleia: An Ibero-Byzantine expeditionary ...
published the first satisfactory mathematical denotational theory of the
Actor model The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more ...
using
domain theory Domain theory is a branch of mathematics that studies special kinds of partially ordered sets (posets) commonly called domains. Consequently, domain theory can be considered as a branch of order theory. The field has major applications in computer ...
in his dissertation in 1981. His semantics contrasted the
unbounded nondeterminism In computer science, unbounded nondeterminism or unbounded indeterminacy is a property of concurrency by which the amount of delay in servicing a request can become unbounded as a result of arbitration of contention for shared resources ''while ...
of the
Actor model The actor model in computer science is a mathematical model of concurrent computation that treats ''actor'' as the universal primitive of concurrent computation. In response to a message it receives, an actor can: make local decisions, create more ...
with the bounded nondeterminism of CSP oare 1978and Concurrent Processes ilne and Milner 1979(see
denotational semantics In computer science, denotational semantics (initially known as mathematical semantics or Scott–Strachey semantics) is an approach of formalizing the meanings of programming languages by constructing mathematical objects (called ''denotations'' ...
). Roscoe 005has developed a denotational semantics with unbounded nondeterminism for a subsequent version of Communicating Sequential Processes Hoare
985 Year 985 ( CMLXXXV) was a common year starting on Thursday (link will display the full calendar) of the Julian calendar. Events By place Europe * Summer – Henry II (the Wrangler) is restored as duke of Bavaria by Empress Theoph ...
More recently
Carl Hewitt Carl Eddie Hewitt () is an American computer scientist who designed the Planner programming language for automated planningCarl Hewitt''PLANNER: A Language for Proving Theorems in Robots''IJCAI. 1969. and the actor model of concurrent computing, ...
006bdeveloped a denotational semantics for Actors based on timed diagrams. Ugo Montanari and Carolyn Talcott
998 Year 998 ( CMXCVIII) was a common year starting on Saturday (link will display the full calendar) of the Julian calendar. Events By place Europe * Spring – Otto III retakes Rome and restores power in the papal city. Crescenti ...
have contributed to attempting to reconcile Actors with process calculi.


References

*Carl Hewitt, Peter Bishop and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence IJCAI 1973. *Robin Milner. Processes: A Mathematical Model of Computing Agents in Logic Colloquium 1973. *Irene Greif and Carl Hewitt. '
Actor Semantics of PLANNER-73
'' Conference Record of ACM Symposium on Principles of Programming Languages. January 1975. *Irene Greif. Semantics of Communicating Parallel Processes MIT EECS Doctoral Dissertation. August 1975. *Gordon Plotkin. A powerdomain construction SIAM Journal on Computing September 1976. *Carl Hewitt and Henry Baker '
Actors and Continuous Functionals
'' Proceeding of IFIP Working Conference on Formal Description of Programming Concepts. August 1–5, 1977. *Gilles Kahn and David MacQueen. Coroutines and networks of parallel processes IFIP. 1977 *Aki Yonezawa Specification and Verification Techniques for Parallel Programs Based on Message Passing Semantics MIT EECS Doctoral Dissertation. December 1977. * Michael Smyth. ''Power domains'' Journal of Computer and System Sciences. 1978. * George Milne and
Robin Milner Arthur John Robin Gorell Milner (13 January 1934 – 20 March 2010), known as Robin Milner or A. J. R. G. Milner, was a British computer scientist, and a Turing Award winner.
. ''Concurrent processes and their syntax'' JACM. April, 1979. * CAR Hoare.
Communicating Sequential Processes
CACM. August, 1978. * Nissim Francez, C.A.R. Hoare, Daniel Lehmann, and Willem de Roever. Semantics of nondeterminism, concurrency, and communication Journal of Computer and System Sciences. December 1979. *Mathew Hennessy and Robin Milner. On Observing Nondeterminism and Concurrency LNCS 85. 1980. *Will Clinger. '
Foundations of Actor Semantics
'' MIT Mathematics Doctoral Dissertation. June 1981. *Mathew Hennessy. A Term Model for Synchronous Processes Computer Science Dept. Edinburgh University. CSR-77-81. 1981. *J.A. Bergstra and J.W. Klop. Process algebra for synchronous communication Information and Control. 1984. *Luca Cardelli. An implementation model of rendezvous communication Seminar on Concurrency. Lecture Notes in Computer Science 197. Springer-Verlag. 1985 *Robert van Glabbeek. Bounded nondeterminism and the approximation induction principle in process algebra Symposium on Theoretical Aspects of Computer Sciences on STACS 1987. *K. Mani Chandy and Jayadev Misra. Parallel Program Design: A Foundation Addison-Wesley 1988. *Robin Milner, Joachim Parrow and David Walker. A calculus of mobile processes Computer Science Dept. Edinburgh. Reports ECS-LFCS-89-85 and ECS-LFCS-89-86. June 1989. Revised Sept. 1990 and Oct. 1990 respectively. *Robin Milner. The Polyadic pi-Calculus: A Tutorial Edinburgh University. LFCS report ECS-LFCS-91-180. 1991. *Kohei Honda and Mario Tokoro. An Object Calculus for Asynchronous Communication ECOOP 91. *José Meseguer. '
Conditional rewriting logic as a unified model of concurrency
'' in Selected papers of the Second Workshop on Concurrency and compositionality. 1992. *Frederick Knabe. A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992. *Geoff Barrett.
Occam 3 reference manual
INMOS. 1992. *Benjamin Pierce, Didier Rémy and David Turner. A typed higher-order programming language based on the pi-calculus Workshop on type Theory and its application to computer Systems. Kyoto University. July 1993. *. *R. Amadio and S. Prasad. Locations and failures Foundations of Software Technology and Theoretical Computer Science Conference. 1994. *Cédric Fournet and Georges Gonthier. The reflexive chemical abstract machine and the join-calculus POPL 1996. *Cédric Fournet, Georges Gonthier, Jean-Jacques Lévy, Luc Maranget, and Didier Rémy. A Calculus of Mobile Agents CONCUR 1996. *Tatsurou Sekiguchi and
Akinori Yonezawa is a Japanese computer scientist specializing in object-oriented programming, distributed computing and information security. Being a graduate of the University of Tokyo, Yonezawa has a Ph.D in computer science from MIT in the Actor group at t ...
. A Calculus with Code Mobility FMOODS 1997. * * *Ugo Montanari and Carolyn Talcott. Can Actors and Pi-Agents Live Together? Electronic Notes in Theoretical Computer Science. 1998. *Robin Milner. Communicating and Mobile Systems: the Pi-Calculus Cambridge University Press. 1999. * *Davide Sangiorgi and David Walker. The Pi-Calculus : A Theory of Mobile Processes Cambridge University Press. 2001. *P. Thati, R. Ziaei, and G. Agha. A theory of may testing for asynchronous calculi with locality and no name matching Algebraic Methodology and Software Technology. Springer Verlag. September 2002. LNCS 2422. * *J.C.M. Baeten, T. Basten, and M.A. Reniers. Algebra of Communicating Processes Cambridge University Press. 2005. *He Jifeng and C.A.R. Hoare. Linking Theories of Concurrency United Nations University International Institute for Software Technology UNU-IIST Report No. 328. July, 2005. *Luca Aceto and
Andrew D. Gordon Andrew D. Gordon is a British computer scientist employed by Microsoft Research. His research interests include programming language design, formal methods, concurrency, cryptography, and access control. Biography Gordon earned a Ph.D. from ...
(editors). Algebraic Process Calculi: The First Twenty Five Years and Beyond Process Algebra. Bertinoro, Forl`ı, Italy, August 1–5, 2005. *{{citation, authorlink = Bill Roscoe, first = A. W., last = Roscoe, title = The Theory and Practice of Concurrency, publisher =
Prentice Hall Prentice Hall was an American major educational publisher owned by Savvas Learning Company. Prentice Hall publishes print and digital content for the 6–12 and higher-education market, and distributes its technical titles through the Safari B ...
, isbn = 978-0-13-674409-2, year = 2005, url-access = registration, url = https://archive.org/details/theorypracticeof00rosc *Carl Hewitt (2006b
''What is Commitment? Physical, Organizational, and Social''
COIN@AAMAS. 2006. Actor model (computer science) Process calculi