Declarative Debugging of Maude Modules

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 members...

Descripción completa

Detalles Bibliográficos
Autores: Riesco Rodríguez, Adrián, Verdejo López, José Alberto, Caballero, Rafael, Martí Oliet, Narciso
Tipo de recurso: informe técnico
Fecha de publicación:2008
País:España
Institución:Universidad Complutense de Madrid (UCM)
Repositorio:Docta Complutense
Idioma:español
OAI Identifier:oai:docta.ucm.es:20.500.14352/56718
Acceso en línea:https://hdl.handle.net/20.500.14352/56718
Access Level:acceso abierto
Palabra clave:Declarative debugging
Rewriting logic
Maude
Metalevel implementation
Lenguajes de programación
1203.23 Lenguajes de Programación
Descripción
Sumario: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.