Definiteness Analysis for CLP(R). Baker, N. & Søndergaard, H. In Gupta, G., Mohay, G., & Topor, R., editors, Proceedings of the Sixteenth Australian Computer Science Conference, volume 15, of Australian Computer Science Communications, pages 321–332, 1993.
abstract   bibtex   
Constraint logic programming (CLP) languages generalise logic programming languages, amalgamating logic programming and constraint programming. Combining the best of two worlds, they provide powerful tools for wide classes of problems. As with logic programming languages, code optimization by compilers is an important issue in the implementation of CLP languages. A compiler needs sophisticated global information, collected by dataflow analyses, to generate competitive code. One kind of useful dataflow information concerns the point at which variables become definite, that is, constrained to take a unique value. In this paper we present a very precise dataflow analysis to determine definiteness, and we discuss its applications. By separating the two concerns: correctness and implementation techniques, abstract interpretation enables us to develop a sophisticated dataflow analysis in a straightforward manner, in fact in a framework where the correctness of the analysis is easily established—a feature which is uncommon when complex analyses are developed in an ad hoc way. We use a class of Boolean functions, the positive functions, to represent the definiteness relationship between variables. A Boolean function is interpreted as expressing a relation which holds not simply at the given point in an evaluation, but in fact during the rest of the evaluation branch. The nature of variables in a CLP language makes this treatment both possible and natural.
@inproceedings{Bak-Son_ACSC93,
  author    = {Naomi Baker and 
		Harald S{\o}ndergaard},
  title     = {Definiteness Analysis for {CLP(R)}},
  editor    = {G. Gupta and G. Mohay and R. Topor},
  booktitle = {Proceedings of the Sixteenth Australian Computer Science 
		Conference},
  series    = {Australian Computer Science Communications},
  volume    = {15},
  number    = {1},
  pages     = {321--332},
  year      = {1993},
  abstract  = {Constraint logic programming (CLP) languages generalise
		logic programming languages, amalgamating logic programming
		and constraint programming.  Combining the best of two
		worlds, they provide powerful tools for wide classes
		of problems.  As with logic programming languages, code
		optimization by compilers is an important issue in the
		implementation of CLP languages.  A compiler needs
		sophisticated global information, collected by dataflow
		analyses, to generate competitive code.
		One kind of useful dataflow information concerns the point
		at which variables become definite, that is, constrained
		to take a unique value.  In this paper we present a very
		precise dataflow analysis to determine definiteness, and we
		discuss its applications.  By separating the two concerns:
		correctness and implementation techniques, abstract
		interpretation enables us to develop a sophisticated
		dataflow analysis in a straightforward manner, in fact in
		a framework where the correctness of the analysis is easily
		established---a feature which is uncommon when complex
		analyses are developed in an ad hoc way.
		We use a class of Boolean functions, the positive functions,
		to represent the definiteness relationship between variables.
		A Boolean function is interpreted as expressing a relation
		which holds not simply at the given point in an evaluation,
		but in fact during the rest of the evaluation branch.
		The nature of variables in a CLP language makes this
		treatment both possible and natural.},
  keywords  = {Constraint logic programming, Boolean logic, Abstract interpretation},
}

Downloads: 0