Clavel's book proposes a general theory of reflective logics and reflective declarative programming languages that provides a conceptual foundation for judging the extent to which a computational system is reflective. Applying this general framework, Clavel makes an in depth study of reflection in rewriting logic. This book presents examples of the powerful potential for reflective programming in a number of novel computer applications. Clavel proposes axiomatic notions for reflective logics and reflective declarative programming languages. The key concept is the notion of a 'universal theory' that can simulate the deductions of all other theories in a logic. These applications are developed using the Maude language, a reflective programming language and environment that implements rewriting logic and supports its reflective capabilities. These examples demonstrate the power of Maude to define and execute mappings of logics, and to represent and execute different languages and models of computation.