This book gives a comprehensive account of Maude, a language and system based on rewriting logic. Many examples are used throughout the book to illustrate the main ideas and features of Maude, and its many possible uses. Maude modules are rewrite theories. Computation with such modules is effi- cient deduction by rewriting. Because of its logical basis and its initial model semantics, a Maude module defines a precise mathematical model. This means that Maude and its formal tool environment can be used in three, mutually reinforcing ways: (1) as a declarative programming language; (2) as an executable formal specification language; and (3) as a formal verification system. Maude’s rewriting logic is simple, yet very expressive. This gives Maude good representational capabilities as a semantic framework to formally repre- sent a wide range of systems, including models of concurrency, distributed al- gorithms, network protocols, semantics of programming languages, and mod- els of cell biology. Rewriting logic is also an expressive universal logic, making Maude a flexible logical framework in which many different logics and in- ference systems can be represented and mechanized. This makes Maude a useful metatool to build many other tools, including those in its own formal tool environment. Thanks to the logic’s simplicity and the use of advanced semi-compilation techniques, Maude has a high-performance implementation, making it competitive with other declarative programming languages. The introduction (Chapter 1) gives a high-level overview of Maude’s main concepts and underlying philosophy, and of its various applications. Since this book gives a very complete account of Maude in its various aspects, Section 1.7 gives specific suggestions on different reading “paths” within the book, that can be chosen depending on the degree of prior familiarity with the main ideas and the various uses intended, for example, as a programming language or as a formal specification and verification tool.
Keywords: rewriting logic, Maude, executable specification, declarative language