Symbolic evaluation graphs and term rewriting: a general methodology for analyzing logic programs

  • Authors:
  • Jürgen Giesl;Thomas Ströder;Peter Schneider-Kamp;Fabian Emmes;Carsten Fuhs

  • Affiliations:
  • RWTH Aachen University, Aachen, Germany;RWTH Aachen University, Aachen, Germany;University of Southern Denmark, Odense, Denmark;RWTH Aachen University, Aachen, Germany;University College London, London, United Kingdom

  • Venue:
  • Proceedings of the 14th symposium on Principles and practice of declarative programming
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

There exist many powerful techniques to analyze termination and complexity of term rewrite systems (TRSs). Our goal is to use these techniques for the analysis of other programming languages as well. For instance, approaches to prove termination of definite logic programs by a transformation to TRSs have been studied for decades. However, a challenge is to handle languages with more complex evaluation strategies (such as Prolog, where predicates like the cut influence the control flow). In this paper, we present a general methodology for the analysis of such programs. Here, the logic program is first transformed into a symbolic evaluation graph which represents all possible evaluations in a finite way. Afterwards, different analyses can be performed on these graphs. In particular, one can generate TRSs from such graphs and apply existing tools for termination or complexity analysis of TRSs to infer information on the termination or complexity of the original logic program.