Symbolic support graph: a space efficient data structure for incremental tabled evaluation

  • Authors:
  • Diptikalyan Saha;C. R. Ramakrishnan

  • Affiliations:
  • Department of Computer Science, State University of New York at Stony Brook, Stony Brook, New York;Department of Computer Science, State University of New York at Stony Brook, Stony Brook, New York

  • Venue:
  • ICLP'05 Proceedings of the 21st international conference on Logic Programming
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

In an earlier paper, we described a data structure, called support graph, for efficient incremental evaluation of tabled logic programs. The support graph records the dependencies between answers in the tables, and is crucial for efficiently propagating the changes to the tables when facts are deleted. Incremental computation with support graphs are hundreds of times faster than from-scratch evaluation for small changes in the program. However, the graph typically grows faster than the tables themselves, making it impractical to maintain the full support graph for large applications. In this paper we present a data structure, called symbolic support graph, which represents support information compactly. For a variety of useful tabled logic programs, the size of the symbolic support graph grows no faster than the table size. We demonstrate its effectiveness using a large application: a logic-programming-based points-to analyzer for C programs. The incremental analyzer shows very good scalability in terms of space usage, and is hundreds of times faster than from-scratch analysis for small changes to the program.