Declarative debugging of Maude modules

Adrián Riesco, Alberto Verdejo, Rafael Caballero, and Narciso Martí-Oliet

Technical report SIC-6/08, Dpto. Sistemas Informáticos y Computación, Universidad Complutense de Madrid, April 2008.

Abstract: We introduce a declarative debugger for Maude modules: functional modules correspond to executable specifications in membership equational logic, while system modules correspond to rewrite theories. First we describe the construction of appropriate debugging trees for oriented equational and membership inferences and rewrite rules. These trees are obtained as the result of collapsing in proof trees all those nodes whose correction does not need any justification.

We include several extended examples to illustrate the use of the declarative debugger and its main features, such as two possible constructions of the debugging tree, two different strategies to traverse it, use of a correct module to reduce the number of questions asked to the user, selection of trusted vs. suspicious statements by means of labels, and trusting of statements "on the fly".

Since Maude supports the reflective features in its underlying logic, it includes a predefined META-LEVEL module providing access to metalevel concepts such as specifications or computations as usual data. This allows us to generate and navigate the debugging tree of a Maude computation using operations in Maude itself. Even the user interface of the declarative debugger for Maude can be specified in Maude itself. We describe in detail this metalevel implementation of our tool.

The Maude source files for the debugging tool and several examples are available from the webpage.

[pdf]

@techreport{debuggingTR08,
    Author = {Adri\'an Riesco and Alberto Verdejo and Rafael Caballero and Narciso Mart\'{\i}-Oliet},
    Institution = {Dpto.\ Sistemas Inform\'aticos y Computaci\'on, Universidad Complutense de Madrid},
    Number = {SIC-6/08},
    Title = {Declarative debugging of {Maude} modules},
    Year = {2008}}