All primitive communicative actions:
- Give no transients.
- Produce no bindings.
- Make no changes to storage.
- Redirect no bindings.
There is only a unary communicative action combinator.
send Y: a primitive communicative action, where Y yields a sort of message.
Represents initiating the transmission of a message. The usual form of Y is
a message [to Y1] [containing Y2], where
Y1 and Y2 yield individuals.
- Indivisible. Commits and completes when the sort of message
yielded by Y includes a message from the current performer (with
the next serial number). Fails otherwise.
- Emits a message of the sort yielded by Y. The serial
number of the message is the successor of that of the previous message
sent (or contract offered) by the performing agent. Message
transmission is reliable, but each message takes an implementation-dependent
'time' to arrive (so message transmission between two
particular agents is not necessarily order-preserving).
OBS:This action is not implemented by the action interpreter.
remove Y: a primitive communicative action, where
Y is a yielder of individual messages. Represents that a particular
message in the buffer has been processed and is to be discarded.
- Indivisible. Commits and completes when the message yielded by
Y is in the buffer. Fails otherwise.
- Removes the message yielded by Y from the buffer.
OBS:This action is not implemented by the action interpreter.
offer Y: a primitive communicative action, where
Y yields sort of contract. Represents initiating the
arrangement of a contract with another, perhaps only partially
specified, agent. The usual form of Y is a contract [to an agent]
[containing abstraction of A], where A is the action
to be performed according to the contract.
- Indivisible. Commits and completes when the sort of contract
yielded by Y includes an individual contract from the performer.
Fails otherwise.
- Gives no data.
- Requests the arrangement of a contract of the sort yielded by
Y. Offered contracts are distinguished by serial numbers, as
with sent messages. The arrangement of a contract takes an
implementation-dependent 'time', which must be finite when there is
a continually uncontracted agent of the specified sort.
OBS:This action is not implemented by the action interpreter.
patiently A: a communicative action, where A is an action. Represents
busy waiting while A fails. Only useful when A refers
to information that may change due to some other action, for instance,
the messages in the buffer.
- Performs A indivisibly, but not indivisible itself. If the
performance fails it tries again. Thus it diverges when A always fails.
- Functionally as A.
- Declaratively as A.
OBS:This action is not implemented by the action interpreter.
|