The Ciao PreprocessorCiaoPP is the abstract interpretation-based preprocessor of the Ciao multi-paradigm program development environment.
CiaoPP can perform a number of program debugging, analysis, and source-to-source transformation tasks on (Ciao) Prolog programs. These tasks include:
- Inference of properties of the predicates and literals of the program (types, modes and other variable instantiation properties, non-failure, determinacy, bounds on *computational cost, bounds on sizes of terms* in the program, etc.
- Certain kinds of static debugging and verification, finding errors before running the program. This includes checking how programs call system library predicates and also *checking the assertions* present in the program or in other modules used by the program. Such assertions represent essentially partial specifications of the program.
- Several kinds of source to source program transformations such as program specialization, slicing, partial evaluation of a program, program parallelization (taking granularity control into account), inclusion of run-time tests for assertions which cannot be checked completely at compile-time, etc.
CiaoPP is distributed under the GNU general public license.