A generic preprocessor for program validation and debugging

Puebla Sánchez, Alvaro Germán and Bueno Carrillo, Francisco and Hermenegildo, Manuel V. (2000). A generic preprocessor for program validation and debugging. In: "Analysis and Visualization Tools for Constraint Programming". Lecture Notes in Computer Science (1870). Springer Berlin Heidelberg, pp. 63-107. ISBN 9783540411376. https://doi.org/10.1007/10722311_3.


Title: A generic preprocessor for program validation and debugging
  • Puebla Sánchez, Alvaro Germán
  • Bueno Carrillo, Francisco
  • Hermenegildo, Manuel V.
  • Deransart, Pierre
  • Hermenegildo Salinas, Manuel Vicente
  • Małuszynski, Jan
Item Type: Book Section
Title of Book: Analysis and Visualization Tools for Constraint Programming
Date: September 2000
ISBN: 9783540411376
Faculty: Facultad de Informática (UPM)
Department: Inteligencia Artificial
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img] PDF - Users in campus UPM only - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (2MB)


We present a generic preprocessor for combined static/dynamic validation and debugging of constraint logic programs. Passing programs through the preprocessor prior to execution allows detecting many bugs automatically. This is achieved by performing a repertoire of tests which range from simple syntactic checks to much more advanced checks based on static analysis of the program. Together with the program, the user may provide a series of assertions which trigger further automatic checking of the program. Such assertions are written using the assertion language presented in Chapter 2, which allows expressing a wide variety of properties. These properties extend beyond the predefined set which may be understandable by the available static analyzers and include properties defined by means of user programs. In addition to user-provided assertions, in each particular CLP system assertions may be available for predefined system predicates. Checking of both user-provided assertions and assertions for system predicates is attempted first at compile-time by comparing them with the results of static analysis. This may allow statically proving that the assertions hold (Le., they are validated) or that they are violated (and thus bugs detected). User-provided assertions (or parts of assertions) which cannot be statically proved ñor disproved are optionally translated into run-time tests. The implementation of the preprocessor is generic in that it can be easily customized to different CLP systems and dialects and in that it is designed to allow the integration of additional analyses in a simple way. We also report on two tools which are instances of the generic preprocessor: CiaoPP (for the Ciao Prolog system) and CHIPRE (for the CHIP CLP(FL>) system). The currently existing analyses include types, modes, non-failure, determinacy, and computational cost, and can treat modules separately, performing incremental analysis.

More information

Item ID: 14565
DC Identifier: https://oa.upm.es/14565/
OAI Identifier: oai:oa.upm.es:14565
DOI: 10.1007/10722311_3
Official URL: http://link.springer.com/chapter/10.1007%2F10722311_3
Deposited by: Biblioteca Facultad de Informatica
Deposited on: 28 Feb 2013 09:19
Last Modified: 22 Sep 2014 11:04
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM