Declarative debugging of rewriting logic specifications

Declarative debugging is a semi-automatic technique that starts from an incorrect computation and locates a program fragment responsible for the error by building a tree representing this computation and guiding the user through it to find the error. Membership equational logic (MEL) is an equationa...

Descripción completa

Detalles Bibliográficos
Autores: Riesco Rodríguez, Adrián, Verdejo López, José Alberto, Martí Oliet, Narciso, Caballero, Rafael
Tipo de recurso: informe técnico
Fecha de publicación:2010
País:España
Institución:Universidad Complutense de Madrid (UCM)
Repositorio:Docta Complutense
Idioma:inglés
OAI Identifier:oai:docta.ucm.es:20.500.14352/48948
Acceso en línea:https://hdl.handle.net/20.500.14352/48948
Access Level:acceso abierto
Palabra clave:Declarative debugging
Rewriting logic
Maude
Wrong Answers
Missing answers
Lenguajes de programación
1203.23 Lenguajes de Programación
Descripción
Sumario:Declarative debugging is a semi-automatic technique that starts from an incorrect computation and locates a program fragment responsible for the error by building a tree representing this computation and guiding the user through it to find the error. Membership equational logic (MEL) is an equational logic that in addition to equations allows to state membership axioms characterizing the elements of a sort. Rewriting logic is a logic of change that extends MEL by adding rewrite rules, that correspond to transitions between states and can be nondeterministic. We propose here a calculus to infer reductions, sort inferences, normal forms and least sorts with the equational part, and rewrites and sets of reachable terms through rules. We use an abbreviation of the proof trees computed with this calculus to build appropriate debugging trees for both wrong (an incorrect result obtained from an initial result) and missing answers (results that are erroneous because they are incomplete), whose adequacy for debugging is proved. Using these trees we have implemented a declarative debugger for Maude, a high-performance system based on rewriting logic, whose use is illustrated with an example.