The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Information Processing Letters
A unified computation model for functional and logic programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A demand-driven set-based analysis
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Evaluation Dependence Tree as a Basis for Lazy FunctionalDebugging
Automated Software Engineering
Tracing Lazy Functional Computations Using Redex Trails
PLILP '97 Proceedings of the9th International Symposium on Programming Languages: Implementations, Logics, and Programs: Including a Special Trach on Declarative Programming Languages in Education
Program Specialization via Program Slicing
Selected Papers from the Internaltional Seminar on Partial Evaluation
Eliminating dead code on recursive data
Science of Computer Programming - Special issue on static analysis (SAS'99)
A program transformation for debugging Haskell 98
ACSC '03 Proceedings of the 26th Australasian computer science conference - Volume 16
Haskell tools from the programatica project
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
Dynamic slicing in higher-order programming languages
Dynamic slicing in higher-order programming languages
Higher-order narrowing with definitional trees
Journal of Functional Programming
A semantics for tracing declarative multi-paradigm programs
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Forward slicing of multi-paradigm declarative programs based on partial evaluation
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
Lightweight program specialization via dynamic slicing
Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming
Combining algorithmic debugging and program slicing
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Forward slicing of functional logic programs by partial evaluation
Theory and Practice of Logic Programming
Static Slicing of Rewrite Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Dynamic slicing of lazy functional programs based on redex trails
Higher-Order and Symbolic Computation
A slicing tool for lazy functional logic programs
JELIA'06 Proceedings of the 10th European conference on Logics in Artificial Intelligence
Overlapping rules and logic variables in functional logic programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Source-Based trace exploration
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
System dependence graphs in sequential erlang
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
Tracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.In this work, we introduce a novel technique for dynamic slicing in lazy functional logic languages. Rather than starting from scratch, our technique relies on (a slight extension of) redex trails. We provide a method to compute a correct and minimal dynamic slice from the redex trail of a computation. A clear advantage of our proposal is that one can enhance existing tracers with slicing capabilities with a modest implementation effort, since the same data structure (the redex trail) can be used for both tracing and slicing.