The use of agents of many different kinds in a variety of fields of compute
r science and artificial intelligence is increasing rapidly and is due, in
part, to their wide applicability. The richness of the agent metaphor that
leads to many different uses of the term is, however, both a strength and a
weakness: its strength lies in the fact that it can be applied in very man
y different ways in many situations for different purposes; the weakness is
that the term agent is now used so frequently that there is no commonly ac
cepted notion of what it is that constitutes an agent. This paper addresses
this issue by applying formal methods to provide a defining framework for
agent systems. The Z specification language is used to provide an accessibl
e and unified formal account of agent systems, allowing us to escape from t
he terminological chaos that surrounds agents. In particular, the framework
precisely and unambiguously provides meanings for common concepts and term
s, enables alternative models of particular classes of system to be describ
ed within it, and provides a foundation for subsequent development of incre
asingly more refined concepts.