'The authors present in a deep, precise, and comprehensive way one of the most important developments in economic theory in the last decade: interactive knowledge. Reasoning About Knowledge has already become the standard reference for the field. It is a must for any student or scholar who really wants to understand the logic of knowledge and interactive knowledge, and an ideal text for an advanced course.' -- Ariel Rubinstein, Professor, Department of Economics, Tel Aviv University and Princeton University Reasoning about knowledge -- particularly the knowledge of agents who reason about the world and each other's knowledge -- was once the exclusive province of philosophers and puzzle solvers. More recently, this type of reasoning has been shown to play a key role in a surprising number of contexts, from understanding conversations to the analysis of distributed computer algorithms. Reasoning About Knowledge is the first book to provide a general discussion of approaches to reasoning about knowledge and its applications to distributed systems, artificial intelligence, and game theory. It brings ten years of work by the authors into a cohesive framework for understanding and analyzing reasoning about knowledge that is intuitive, mathematically well founded, useful in practice, and widely applicable. The book is almost completely self-contained and should be accessible to readers in a variety of disciplines, including computer science, artificial intelligence, linguistics, philosophy, cognitive science, and game theory. Each chapter includes exercises and bibliographic notes. The authors start with an overview that uses the well-known 'muddy childern puzzle' to demonstrate the subtleties of reasoning about knowledge of a group. They go on to introduce a simple yet powerful formal semantic model for knowledge and a language for reasoning about knowledge whose underlying idea is that of 'possible worlds'. The remaining chapters develop the model and show how it can be used to ascribe knowledge to agents in multiagent systems. This allows us to better understand notions such as coordination and agreement. The definitions lead naturally to a notion of knowledge-based programs, a high-level tool for designing and analyzing systems. A number of detailed examples of applications of the formalism to particular problems are provided.