Bottom-up abstract interpretation of logic programs

Michael Codish, Dennis Dams, Eyal Yardeni

Research output: Contribution to journalArticlepeer-review

41 Scopus citations

Abstract

This paper presents a formal framework for the bottom-up abstract interpretation of logic programs which can be applied to approximate answer substitutions, partial answer substitutions and call patterns for a given program and arbitrary initial goal. The framework is based on a Tp-like semantics defined over a Herbrand universe with variables which has previously been shown to determine the answer substitutions for arbitrary initial goals. The first part of the paper reconstructs this semantics to provide a more adequate initial goals. The first part of the paper reconstructs this semantics to provide a more adequate basis for abstract interpretation. A notion of abstract substitution is introduced and shown to determine an abstract semantic function which for a given program can be applied to approximate the answer substitutions for an arbitrary initial goal. The second part of the paper extends the bottom-up approach to provide approximations of both partial answer substitutions and call patterns. This is achieved by applying Magic Sets and other existing techniques to transform a program in such a way that the answer substitutions of the transformed program correspond to the partial answer substitutions and call patterns of the original program. This facilitates the analysis of concurrent logic programs (ignoring synchronization) and provides a collecting semantics which characterizes both success and call patterns.

Original languageEnglish
Pages (from-to)93-125
Number of pages33
JournalTheoretical Computer Science
Volume124
Issue number1
DOIs
StatePublished - 14 Feb 1994
Externally publishedYes

ASJC Scopus subject areas

  • Theoretical Computer Science
  • Computer Science (all)

Fingerprint

Dive into the research topics of 'Bottom-up abstract interpretation of logic programs'. Together they form a unique fingerprint.

Cite this