Using Global Analysis, Partial Specifications, and an Extensible Assertion Language for Program Validation and Debugging [chapter]

Manuel Hermenegildo, Germán Puebla, Francisco Bueno
1999 The Logic Programming Paradigm  
We discuss a framework for the application of abstract interpretation as an aid during program development, rather than in the more traditional application of program optimization. Program validation and detection of errors is first performed statically by comparing (partial) specifications written in terms of assertions against information obtained from (global) static analysis of the program. The results of this process are expressed in the user assertion language. Assertions (or parts of
more » ... rtions) which cannot be checked statically are translated into run-time tests. The framework allows the use of assertions to be optional. It also allows using very general properties in assertions, beyond the predefined set understandable by the static analyzer and including properties defined by user programs. We also report briefly on an implementation of the framework. The resulting tool generates and checks assertions for Prolog, CLP(R), and CHIP/CLP(fd) programs, and integrates compile-time and run-time checking in a uniform way. The tool allows using properties such as types, modes, non-failure, determinacy, and computational cost, and can treat modules separately, performing incremental analysis.
doi:10.1007/978-3-642-60085-2_7 fatcat:zup3lsn2cvfkpoo5egu6z4lvky