https://github.com/ciao-lang/ciaopp
The Ciao Preprocessor
https://github.com/ciao-lang/ciaopp
abstract-interpretation ciao-prolog prolog static-analysis
Last synced: 4 months ago
JSON representation
The Ciao Preprocessor
- Host: GitHub
- URL: https://github.com/ciao-lang/ciaopp
- Owner: ciao-lang
- License: lgpl-3.0
- Created: 2019-07-19T11:17:43.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-06-17T17:29:14.000Z (about 1 year ago)
- Last Synced: 2026-02-09T08:53:08.290Z (5 months ago)
- Topics: abstract-interpretation, ciao-prolog, prolog, static-analysis
- Language: Prolog
- Homepage:
- Size: 11.4 MB
- Stars: 13
- Watchers: 4
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: COPYING
Awesome Lists containing this project
README
# The CiaoPP Program Processor
CiaoPP is a program processor framework for
[Ciao](https://github.com/ciao-lang/ciao). CiaoPP performs a number of
program debugging, analysis, and source-to-source transformation
tasks:
- **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*,
*program parallelization* (taking *granularity control* into
account), inclusion of *run-time tests* for assertions which cannot
be checked completely at compile-time, etc.
The information generated by analysis and the assertions in the
specifications are all written in the same *assertion language*, which
is in turn also used by the Ciao system documentation generator,
`lpdoc`.
This repository contains the generic preprocessor framework together
with some basic analyses, transformations, and language support. Other
features (including support for a variety of programming languages)
are distributed as separate bundles.
CiaoPP is distributed under the GNU general public license.
## Installation
By default, Ciao will detect and build CiaoPP during system
compilation. In order to customize the default configuration options,
please refer to the Ciao installation instructions.
It is possible to do a separate build and install of CiaoPP with the
following command:
```
$ ciao get ciaopp
```