  In this paper we present the new logic programming language DALI, aimed at
defining agents and agent systems. A main design objective for DALI has been
that of introducing in a declarative fashion all the essential features, while
keeping the language as close as possible to the syntax and semantics of the
plain Horn--clause language. Special atoms and rules have been introduced, for
representing: external events, to which the agent is able to respond
(reactivity); actions (reactivity and proactivity); internal events (previous
conclusions which can trigger further activity); past and present events (to be
aware of what has happened). An extended resolution is provided, so that a DALI
agent is able to answer queries like in the plain Horn--clause language, but is
also able to cope with the different kinds of events, and exhibit a (rational)
reactive and proactive behaviour.
