  Rewriting logic is both a flexible semantic framework within which widely
different concurrent systems can be naturally specified and a logical framework
in which widely different logics can be specified. Maude programs are exactly
rewrite theories. Maude has also a formal environment of verification tools.
Symbolic computation is a powerful technique for reasoning about the
correctness of concurrent systems and for increasing the power of formal tools.
We present several new symbolic features of Maude that enhance formal reasoning
about Maude programs and the effectiveness of formal tools. They include: (i)
very general unification modulo user-definable equational theories, and (ii)
symbolic reachability analysis of concurrent systems using narrowing. The paper
does not focus just on symbolic features: it also describes several other new
Maude features, including: (iii) Maude's strategy language for controlling
rewriting, and (iv) external objects that allow flexible interaction of Maude
object-based concurrent systems with the external world. In particular,
meta-interpreters are external objects encapsulating Maude interpreters that
can interact with many other objects. To make the paper self-contained and give
a reasonably complete language overview, we also review the basic Maude
features for equational rewriting and rewriting with rules, Maude programming
of concurrent object systems, and reflection. Furthermore, we include many
examples illustrating all the Maude notions and features described in the
paper.
