# Actor model middle history

In computer science, the Actor model, first published in 1973 (Hewitt et al. 1973), is a mathematical model of concurrent computation. This article reports on the middle history of the Actor model in which major themes were initial implementations, initial applications, and development of the first proof theory and denotational model. It is the follow on article to Actor model early history which reports on the early history of the Actor model which concerned the basic development of the concepts. The article Actor model later history reports on developments after the ones reported in this article.

## Proving properties of Actor systems

Carl Hewitt [1974] published the principle of Actor induction which is:
* Suppose that an Actor x has property P when it is created
* Further suppose that if x has property P when it processes a message, then it has property P when it processes the next message.
* Then x always has the property P.
In his doctoral dissertation, Aki Yonezawa developed further techniques for proving properties of Actor systems including those that make use of migration. Russ Atkinson and Carl Hewitt developed techniques for proving properties of Serializers that are guardians of shared resources. Gerry Barber's doctoral dissertation concerned reasoning about change in knowledgeable office systems.

## Garbage collection

Garbage collection (the automatic reclamation of unused storage) was an important theme in the development of the Actor model.
In his doctoral dissertation, Peter Bishop developed an algorithm for garbage collection in distributed systems. Each system kept lists of links of pointers to and from other systems. Cyclic structures were collected by incrementally migrating Actors (objects) onto other systems which had their addresses until a cyclic structure was entirely contained in a single system where the garbage collector could recover the storage.
Henry Baker developed an algorithm for real-time garbage collection in his doctoral dissertation. The fundamental idea was to interleave collection activity with construction activity so that there would not have to be long pauses while collection takes place. See incremental garbage collection.
Henry Lieberman and Carl Hewitt [1983] developed a real time garbage collection based on the lifetimes of Actors (Objects). The fundamental idea was to allocate Actors (objects) in generations so that only the latest generations would have to be examined during a garbage collection. See generational garbage collection.

## Actor programming languages

Henry Lieberman, Dan Theriault, et al. developed Act1, an Actor programming language. Subsequently for his masters thesis, Dan Theriault developed Act2. These early proof of concept languages were rather inefficient and not suitable for applications. In his doctoral dissertation, Ken Kahn developed Ani, which he used to develop several animations. Bill Kornfeld developed the Ether programming language for the Scientific Community Metaphor in his doctoral dissertation. William Athas and Nanette Boden [1988] developed Cantor which is an Actor programming language for scientific computing. Jean-Pierre Briot [1988, 1999] developed means to extend Smalltalk 80 for Actor computations. Christine Tomlinson, Mark Scheevel, Greg Lavender, Greg Meredith, et al. [1995] at MCC developed an Actor programming language for InfoSleuth agents in Rosette.
Carl Hewitt, Beppe Attardi, and Henry Lieberman [1979] developed proposals for delegation in message passing. This gave rise to the so-called inheritance anomaly controversy in object-oriented concurrent programming languages [Satoshi Matsuoka and Aki Yonezawa 1993, Giuseppe Milicia and Vladimiro Sassone 2004].

## A denotational model of Actor systems

In his doctoral dissertation, Will Clinger developed the first denotational model of Actor systems. See denotational semantics of the Actor model.