The AR (Action Rules) language is designed to facilitate the specification of event-driven functionality that is needed by applications (such as constraint propagators and graphical user interfaces), where interactions of multiple entities are essential . An action rule specifies a pattern for agents, an action that the agents can carry out, and an event pattern for events that can activate the agents. An agent is a call or a subgoal that can be suspended, and that can later be activated by events. Agents are a more general notion than freeze in Prolog-II and processes in concurrent logic programming, in the sense that agents can be responsive to various kinds of events, including user-defined events. This chapter describes the syntax and the semantics of action rules. Later chapters will provide examples of the use of action rules to program constraint propagators and interactive user interfaces. A compiler which translates CHR (Constraint Handling Rules) into AR is presented in .