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

4 Citations (Scopus)

Abstract

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
Volume28
Issue number2
DOIs
Publication statusPublished - 1 Jan 1998

Keywords

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

Cite this

Kelly, Andrew D. ; Marriott, Kim ; Søndergaard, Harald ; Stuckey, Peter J. / A practical object-oriented analysis engine for CLP. In: Software - Practice and Experience. 1998 ; Vol. 28, No. 2. pp. 199-224.
@article{50d7a719c1224669832af2dad11e56a2,
title = "A practical object-oriented analysis engine for CLP",
abstract = "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.",
keywords = "Abstract interpretation, Constraint logic programming, Object-oriented, Program analysis",
author = "Kelly, {Andrew D.} and Kim Marriott and Harald S{\o}ndergaard and Stuckey, {Peter J.}",
year = "1998",
month = "1",
day = "1",
doi = "10.1002/(SICI)1097-024X(199802)28:2<199::AID-SPE150>3.0.CO;2-4",
language = "English",
volume = "28",
pages = "199--224",
journal = "Software-Practice & Experience",
issn = "0038-0644",
publisher = "Wiley-Blackwell",
number = "2",

}

A practical object-oriented analysis engine for CLP. / Kelly, Andrew D.; Marriott, Kim; Søndergaard, Harald; Stuckey, Peter J.

In: Software - Practice and Experience, Vol. 28, No. 2, 01.01.1998, p. 199-224.

Research output: Contribution to journalArticleResearchpeer-review

TY - JOUR

T1 - A practical object-oriented analysis engine for CLP

AU - Kelly, Andrew D.

AU - Marriott, Kim

AU - Søndergaard, Harald

AU - Stuckey, Peter J.

PY - 1998/1/1

Y1 - 1998/1/1

N2 - 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.

AB - 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.

KW - Abstract interpretation

KW - Constraint logic programming

KW - Object-oriented

KW - Program analysis

UR - http://www.scopus.com/inward/record.url?scp=0031996771&partnerID=8YFLogxK

U2 - 10.1002/(SICI)1097-024X(199802)28:2<199::AID-SPE150>3.0.CO;2-4

DO - 10.1002/(SICI)1097-024X(199802)28:2<199::AID-SPE150>3.0.CO;2-4

M3 - Article

VL - 28

SP - 199

EP - 224

JO - Software-Practice & Experience

JF - Software-Practice & Experience

SN - 0038-0644

IS - 2

ER -