The CiaoPP Program Processor

A Program Analysis, Verification, Debugging, and Optimization Tool
The Computational logic, Languages,
Implementation, and Parallelism (CLIP) Lab
https://www.cliplab.org/
School of CS, T. U. of Madrid (UPM)
IMDEA Software Institute
The Ciao Development Team
Edited by:
Francisco Bueno
Manuel Hermenegildo
Pedro López
José Francisco Morales
Germán Puebla
REFERENCE MANUAL
The Ciao Documentation Series
https://ciao-lang.org/
Generated/Printed on: 2026/3/5
Technical Report CLIP 1/06 (first version 8/95).
Version 1.8 (2024/10/13)


CiaoPP 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 (see below for other languages). These tasks include:

The information generated by analysis, program properties to be verified, descriptions of the system libraries, directives provided to guide analysis, etc. are all written in the same assertion language, which is in turn also processed by the Ciao system documentation generator, lpdoc.

CiaoPP is distributed under the GNU general public license.

Support for other languages: CiaoPP is also used to develop analyzers and verifiers for other languages, and tools of different levels of maturity have been built for e.g., Java, (X)C, machine code, smart contracts (Michelson), etc. This is generally done using front ends that translate into the CiaoPP IR (Horn clauses). Some of these front-ends and extensions can be found in separate bundles.

Note: This is the CiaoPP reference manual. To begin using CiaoPP, we suggest you start by following one or more of the companion CiaoPP tutorials available in the Ciao system documentation.

This documentation corresponds to version 1.8 (2024/10/13).

Parts of this manual