In fact, functional modules define a functional sublanguage1.2 of Maude. In a functional language true to its name, functions have unique values as their results, and it is neither easy nor natural to deal with highly concurrent and nondeterministic systems while keeping the language's functional semantics. It is well known that such systems pose a serious expressiveness challenge for functional languages. In Maude this challenge is met by system modules, which extend the purely functional semantics of equations to the concurrent rewriting semantics of rules.1.3 Although certainly declarative in the sense of having a clear logical semantics, system modules are of course not functional: that is their entire raison d'être.
Besides this generality in expressing both deterministic and nondeterministic computations, further expressiveness is gained by the following features:
We briefly discuss each of these features in what follows.