A Practical Object-Oriented Analysis Engine for Constraint Logic Programs. Kelly, A. D., Marriott, K., Søndergaard, H., & Stuckey, P. J. Software—Practice and Experience, 28(2):199–224, 1998.
doi  abstract   bibtex   
The incorporation of global program analysis into recent compilers for constraint logic programming (CLP) languages has greatly improved the efficiency of these new languages. We present a global analyzer based on abstract interpretation. Unlike traditional optimizers, whose designs tend to be ad hoc, the analyzer has been designed with maxiaml flexibility in mind. The analyzer is incremental, allowing substantial program transformations by a compiler without requiring redundant re-computation of analysis data. The anayser is also generic in that it can perform a large number of different program analyses. Furthermore, the analyzer has an object-oriented design, enabling it to be adapted to different applications 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 analyzer in two different applications involving two different CLP languages: an optimizing compiler for CLP(${a̧l R}$) programs and an application for detecting occur-check problems in Prolog programs.
@Article{Kel-Mar-Son-Stu_SPE98,
  author    = {Andrew D. Kelly and 
		Kim Marriott and 
		Harald S{\o}ndergaard and 
		Peter J. Stuckey},
  title     = {A Practical Object-Oriented Analysis Engine for Constraint
                Logic Programs},
  journal   = {Software---Practice and Experience},
  volume    = {28},
  number    = {2},
  pages     = {199--224},
  year      = {1998},
  doi       = {10.1002/(SICI)1097-024X(199802)28:2<199::AID-SPE150>3.0.CO;2-4},
  abstract  = {The incorporation of global program analysis into recent 
		compilers for constraint logic programming (CLP) languages has 
		greatly improved the efficiency of these new languages. We 
		present a global analyzer based on abstract interpretation.
		Unlike traditional optimizers, whose designs tend to be ad hoc,
		the analyzer has been designed with maxiaml flexibility in
		mind. The analyzer is incremental, allowing substantial program
		transformations by a compiler without requiring redundant
		re-computation of analysis data. The anayser is also
		generic in that it can perform a large number of different
		program analyses. Furthermore, the analyzer has an
		object-oriented design, enabling it to be adapted to different
		applications 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 analyzer in two different
		applications involving two different CLP languages: an 
		optimizing compiler for CLP(${\cal R}$) programs and an 
		application for detecting occur-check problems in Prolog 
		programs.},
  keywords  = {Constraint programming, Logic programming, Abstract interpretation, Prolog, Static analysis, Program transformation, Compilation, Unification},
}

Downloads: 0