Dynamic slicing of lazy functional programs based on redex trails

  • Authors:
  • Claudio Ochoa;Josep Silva;Germán Vidal

  • Affiliations:
  • DIA, Technical University of Madrid, Boadilla del Monte, Spain 28660;DSIC, Technical University of Valencia, Valencia, Spain 46022;DSIC, Technical University of Valencia, Valencia, Spain 46022

  • Venue:
  • Higher-Order and Symbolic Computation
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Tracing computations is a widely used methodology for program debugging. Lazy languages, however, pose new demands on tracing techniques because following the actual trace of a computation is generally useless. Typically, tracers for lazy languages rely on the construction of a redex trail, a graph that stores the reductions performed in a computation. 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 for finding 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 first-order lazy functional languages. Rather than starting from scratch, our technique relies on (a slight extension of) redex trails. We provide a notion of dynamic slice and introduce a method to compute it from the redex trail of a computation. We also sketch the extension of our technique to deal with a functional logic language. 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.