Results 1 
3 of
3
Declarative Debugging of Rewriting Logic Specifications
 In Recent Trends in Algebraic Development Techniques, 19th Int’l Workshop, WADT 2008, volume 5486 of LNCS
, 2009
"... Abstract. Declarative debugging is a semiautomatic 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 wrong statement. This paper presents the fund ..."
Abstract

Cited by 14 (6 self)
 Add to MetaCart
(Show Context)
Abstract. Declarative debugging is a semiautomatic 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 wrong statement. This paper presents the fundamentals for the declarative debugging of rewriting logic specifications, realized in the Maude language, where a wrong computation can be a reduction, a type inference, or a rewrite. We define appropriate debugging trees obtained as the result of collapsing in proof trees all those nodes whose correctness does not need any justification. Since these trees are obtained from a suitable semantic calculus, the correctness and completeness of the debugging technique can be formally proved. We illustrate how to use the debugger by means of an example and succinctly describe its implementation in Maude itself thanks to its reflective and metalanguage features. 1
Declarative debugging of missing answers in rewriting logic
 Dpto. Sistemas Informáticos y Computación, Universidad Complutense de
, 2009
"... Rewriting logic is a logic of change, where rewrites correspond to transitions between states. One of the main characteristics of these transitions is that they can be nondeterministic, that is, given an initial state, there is a set of possible reachable states. Thus, an additional problem when deb ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
(Show Context)
Rewriting logic is a logic of change, where rewrites correspond to transitions between states. One of the main characteristics of these transitions is that they can be nondeterministic, that is, given an initial state, there is a set of possible reachable states. Thus, an additional problem when debugging rewrite systems is that, although all the terms obtained could be correct, it is possible that not all the desired terms are computed, i.e., there are missing answers. We propose a calculus that allows to infer, given an initial term, the complete set of reachable terms. We use an abbreviation of the proof trees computed with this calculus to build appropriate debugging trees for missing answers, whose adequacy for debugging is proved. We apply then this method to Maude specifications, a highperformance system based on rewriting logic, adding many options to build and navigate the tree. Several examples are shown to illustrate the use of the debugger and all of its features. Since Maude supports the reflective features in its underlying logic, it includes a predefined METALEVEL module providing access to metalevel concepts such as specifications or computations as usual data. This allows us to generate and navigate the debugging tree using operations in Maude
Program Analysis Scenarios in Rascal
"... Abstract. Rascal is a meta programming language focused on the implementation of domainspecific languages and on the rapid construction of tools for software analysis and software transformation. In this paper we focus on the use of Rascal for software analysis. We illustrate a range of scenarios f ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract. Rascal is a meta programming language focused on the implementation of domainspecific languages and on the rapid construction of tools for software analysis and software transformation. In this paper we focus on the use of Rascal for software analysis. We illustrate a range of scenarios for building new software analysis tools through a number of examples, including one showing integration with an existing Maudebased analysis. We then focus on ongoing work on alias analysis and type inference for PHP, showing how Rascal is being used, and sketching a hypothetical solution in Maude. We conclude with a highlevel discussion on the commonalities and differences between Rascal and Maude when applied to program analysis. 1