A practical object-oriented analysis engine for CLP

Andrew D. Kelly, Kim Marriott, Harald Søndergaard, Peter J. Stuckey

Research output: Contribution to journalArticleResearchpeer-review

6 Citations (Scopus)


The incorporation of global program analysis into recent compilers for Constraint Logic Programming (CLP) languages has greatly improved the efficiency of compiled programs. We present a global analyser based on abstract interpretation. Unlike traditional optimizers, whose designs tend to be ad hoc, the analyser has been designed with flexibility in mind. The analyser is incremental, allowing substantial program transformations by a compiler without requiring redundant re-computation of analysis data. The analyser is also generic in that it can perform a large number of different program analyses. Furthermore, the analyser has an object-oriented design, enabling it to be adapted to different applications easily and allowing it to be used with various CLP languages with simple modifications. As an example of this generality, we sketch the use of the analyser in two different applications involving two distinct CLP languages: an optimizing compiler for CLP(R) programs and an application for detecting occur-check problems in Prolog programs.

Original languageEnglish
Pages (from-to)199-224
Number of pages26
JournalSoftware: Practice and Experience
Issue number2
Publication statusPublished - 1 Jan 1998


  • Abstract interpretation
  • Constraint logic programming
  • Object-oriented
  • Program analysis

Cite this