Two case studies of semantics execution in Maude: CCS and LOTOS

Alberto Verdejo and Narciso Martí-Oliet

Formal Methods in System Design, 27:113-172, 2006.

Abstract: We explore the features of rewriting logic and, in particular, of the rewriting logic language Maude as a logical and semantic framework for representing and executing inference systems. In order to illustrate the general ideas we consider two substantial case studies. In the first one, we represent both the semantics of Milner's CCS and a modal logic for describing local capabilities of CCS processes. Although a rewriting logic representation of the CCS semantics is already known, it cannot be directly executed in the default interpreter of Maude. Moreover, it cannot be used to answer questions such as which are the successors of a process after performing an action, which is used to define the semantics of Hennessy-Milner modal logic. Basically, the problems are the existence of new variables in the righthand side of the rewrite rules and the nondeterministic application of the semantic rules, inherent to CCS. We show how these problems can be solved in a general, not CCS dependent way by controlling the rewriting process by means of reflection. This executable specification plus the reflective control of rewriting can be used to analyze CCS processes. The same techniques are also used to implement a symbolic semantics for LOTOS in our second case study. The good properties of Maude as a metalanguage allow us to implement a whole formal tool where LOTOS specifications without restrictions in their data types (given as ACT ONE specifications) can be executed. In summary, we present Maude as an executable semantic framework by providing easy-tool-building techniques for a language given its operational semantics.

[pdf]

@article{VerdejoMartiOliet05,
	Author = {Alberto Verdejo and Narciso Mart{\'\i}-Oliet},
	Journal = {Formal Methods in System Design},
	Pages = {113-172},
	Title = {Two case studies of semantics execution in {Maude}: {CCS} and {LOTOS}},
	Volume = {27},
	Year = {2005}}