Dix, JuergenSubrahmanian, V.S.Pick, GeorgeThere are numerous applications where an agent \aga needs to reason about the beliefs of another agent, as well as about the actions that other agents may take. In Eiter/Subrahmanian/Pick the concept of an agent program is introduced, and a language within which the operating principles of an agent can be declaratively encoded on top of imperative data structures is defined. In this paper we first introduce certain belief data structures that an agent needs to maintain. Then we introduce the concept of a \emph{Meta Agent Program} (\map), that extends the framework of Eiter/Subrahmanian/Pick, so as to allow agents to perform metareasoning. We build a formal semantics for \map{s}, and show how this semantics supports not just beliefs agent a may have about agent b's state, but also beliefs about agents b's beliefs about agent c's actions, beliefs about b's beliefs about agent c's state, and so on. Finally, we provide a translation that takes any \map as input and converts it into an agent program such that there is a one-one correspondence between the semantics of the \map and the semantics of the resulting agent program. This correspondence allows an implementation of \map{s} to be built on top of an implementation of agent programs. Also cross-referenced as UMIACS-TR-99-49en-USMeta Agent ProgramsTechnical Report