Tabling, Rational Terms, and Coinduction Finally Together!

Theofrastos Mantadelis, Ricardo Rocha and Paulo Moura

July 2014


Tabling is a commonly used technique in logic programming for avoiding cyclic behavior of logic programs and enabl ing more declarative program definitions. Furthermore, tabling often improves computational performance. Rational term are terms with one or more infinite sub-terms but with a finite representation. Rational terms can be generat ed in Prolog by omitting the occurs check when unifying two terms. Applications of rational terms include definite clause grammars, constraint handling systems, and coinduction. In this paper, we report our extension of YAP's Prolog tabling mechanism to support rational terms. We describe th e internal representation of rational terms within the table space and prove its correctness. We then use this ext ension to implement a tabling based approach to coinduction. We compare our approach with current coinductive tran sformations and describe the implementation. In addition, we present an algorithm that ensures a canonical represe ntation for rational terms.


  author =    {T. Mantadelis and R. Rocha and P. Moura},
  title =     {{Tabling, Rational Terms, and Coinduction Finally Together!}},
  journal =   {Journal of Theory and Practice of Logic Programming, 
               30th International Conference on Logic Programming (ICLP 2014), Special Issue},
  pages =     {429--443},
  volume =    {14},
  number =    {4 \& 5},
  month =     {July},
  year =      {2014},

Download Paper

PDF file
Cambridge University Press
Computing Research Repository (CoRR)