
events (e.g., timers), events elsewhere in the system, and their own internal state
changes.
Only the last two types of action are visible outside the agent.
To carry out these actions, agents may contain locally-defined functions, which also
cannot be referenced from outside the agent. These functions are a type of procedu-
ral knowledge which may be called upon by the agent's engine as it runs. Since these
functions may give an agent specific skills, they may be sent in messages as a way of
transferring skills to other agents.
Every agent has a name and a class. Agents are described by their class. There may
be many instances of agents of