Copyright on this material is held by the authors. Our coordination logic will be described informally as set of primitive operations. We have two classes of objects, components and containers . Note that a container is, in general, a dynamic entity, corresponding to a set of terms on a blackboard, matching an object through unification. In particular, a fixed set of components associated to a given key qualifies as a container.
Clonable objects allow arbitrary uses through copying, unique objects are usable only once.
Attempts to clone or use an empty object generates an exception. Components inherit such properties from the containers they belong to, although, as usual, overriding can be used if necessary. A component can be moved from one container to another. An agent is a set of behaviors describing such operations, as well as the usual code for logical inferences and arithmetics. Each behavior is usually attached to its own thread , although thread sharing mechanisms can be used on some machines for actual implementations.