Yoav Shoham has proposed a `new programming paradigm, based on a societal view of computation' [Shoham, 1990],[Shoham, 1993]. The key idea that informs this agent-oriented programming (AOP) paradigm is that of directly programming agents in terms of the mentalistic, intentional notions that agent theorists have developed to represent the properties of agents. The motivation behind such a proposal is that, as we observed in section 2, humans use the intentional stance as an abstraction mechanism for representing the properties of complex systems. In the same way that we use the intentional stance to describe humans, it might be useful to use the intentional stance to program machines.
Shoham proposes that a fully developed AOP system will have three components:
CAN^5_a open(door)^8 B^5_b CAN^5_a open(door)^8.
This formula is read: `if at time 5 agent can ensure that the door is open at time 8, then at time 5 agent believes that at time 5 agent can ensure that the door is open at time 8'.
Corresponding to the logic is the AGENT0 programming language. In this language, an agent is specified in terms of a set of capabilities (things the agent can do), a set of initial beliefs and commitments, and a set of commitment rules. The key component, which determines how the agent acts, is the commitment rule set. Each commitment rule contains a message condition, a mental condition, and an action. In order to determine whether such a rule fires, the message condition is matched against the messages the agent has received; the mental condition is matched against the beliefs of the agent. If the rule fires, then the agent becomes committed to the action. Actions may be private, corresponding to an internally executed subroutine, or communicative, i.e., sending messages. Messages are constrained to be one of three types: `requests' or `unrequests' to perform or refrain from actions, and `inform' messages, which pass on information - Shoham indicates that he took his inspiration for these message types from speech act theory [Cohen and Perrault, 1979][Searle, 1969]. Request and unrequest messages typically result in the agent's commitments being modified; inform messages result in a change to the agent's beliefs.