UNPKG

@ciao-lang/ts-ciao-interface

Version:

Simple Ciao interface for node.

4 lines 7.26 kB
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="theme-color" content="#273f79"/><link rel="stylesheet" href="lpdoc.css" type="text/css"/><script type="text/javascript" src="lpdoc.js"></script><title>The CiaoPP Program Processor v1.5</title></head><body><div class="lpdoc-page fixleftbar"><a href="#" id="sidebar-toggle-button" class="lpdoc-navbutton"><span id="sidebar-button-arrow">&#9776;</span></a><div id="sidebar" class="lpdoc-sidebar"><div style="height: 40px; margin-left: auto; margin-right: auto"><img src="ciao-logo_autofig.png" width=auto height=100%></div><div class="lpdoc-nav"><span class="lpdoc-on-right"><a class="lpdoc-navbutton" href="/">&#x2302;</a><span class="lpdoc-navbutton-disabled">&#x2190;</span><a class="lpdoc-navbutton" href="ciaopp_ref_mancopyright.html">&#x2192;</a><a class="lpdoc-navbutton" href="ciaopp_ref_mansearch.html">&#x1F50D;</a></span><span><a href="ciaopp_ref_manfulltoc.html">TOC</a></span></div><hr></hr><ul class="lpdoc-itemize-sectpath"><li><a href=""><strong>The CiaoPP Program Processor</strong></a> &#9662;<ul><li><a href="ciaopp_ref_manintro.html">Introduction</a></li><li><a href="part_usage.html">PART I - Using CiaoPP</a></li><li><a href="part_assertions.html">PART II - The Assertion Language and Its Use</a></li><li><a href="part_extensions.html">PART III - Extending CiaoPP</a></li><li><a href="part_internals.html">PART IV - CiaoPP Internals</a></li></ul></li></ul><hr></hr><ul><li><a href="ciaopp_ref_manchanges.html">Version/Change Log</a></li><li><a href="ciaopp_ref_manrefs.html">References</a></li><li><a href="ciaopp_ref_mancopyright.html">Copyright</a></li></ul></div><div class="lpdoc-main"><div><br/><div class="lpdoc-cover-title"><h1 class="lpdoc-cover-h1">The CiaoPP Program Processor</h1>A Program Analysis, Verification, Debugging, and Optimization Tool<br/></div><div class="lpdoc-cover-address">The Computational logic, Languages, <br/>Implementation, and Parallelism (CLIP) Lab<br/><a href="https://www.cliplab.org/">https://www.cliplab.org/</a><br/>School of CS, T. U. of Madrid (UPM)<br/>IMDEA Software Institute<br/></div><div class="lpdoc-cover-authors">The Ciao Development Team<br/><strong>Edited by:</strong><br/>Francisco Bueno<br/>Manuel Hermenegildo<br/>Pedro L&oacute;pez<br/>Jos&eacute; Francisco Morales<br/>Germ&aacute;n Puebla<br/></div><div class="lpdoc-cover-subtitle-extra">REFERENCE MANUAL<br/><strong>The Ciao Documentation Series</strong><br/><a href="https://ciao-lang.org/">https://ciao-lang.org/</a><br/><em>Generated/Printed on:</em> 2023/7/22<br/>Technical Report CLIP 1/06 (first version 8/95).<br/>Version 1.5 (2022/3/2, 20:34:30 CET)<br/></div><div class="lpdoc-clearer"></div></div> <br/><br/><div id="Summary"> 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. These tasks include:<p><ul> <p><li><a class="lpdoc-idx-anchor" id="0" href="ciaopp_ref_mansearch.html#Inference of properties">Inference of properties</a> of the predicates and literals of the program, including <a class="lpdoc-idx-anchor" id="1" href="ciaopp_ref_mansearch.html#types">types</a>, <a class="lpdoc-idx-anchor" id="2" href="ciaopp_ref_mansearch.html#modes">modes</a> and other <a class="lpdoc-idx-anchor" id="3" href="ciaopp_ref_mansearch.html#variable instantiation">variable instantiation</a> properties, <a class="lpdoc-idx-anchor" id="4" href="ciaopp_ref_mansearch.html#non-failure">non-failure</a>, <a class="lpdoc-idx-anchor" id="5" href="ciaopp_ref_mansearch.html#determinacy">determinacy</a>, bounds on <a class="lpdoc-idx-anchor" id="6" href="ciaopp_ref_mansearch.html#computational cost">computational cost</a>, bounds on <a class="lpdoc-idx-anchor" id="7" href="ciaopp_ref_mansearch.html#sizes of terms">sizes of terms</a> in the program, etc.<p><li>Certain kinds of <a class="lpdoc-idx-anchor" id="8" href="ciaopp_ref_mansearch.html#static debugging">static debugging</a> and verification, finding errors before running the program. This includes checking how programs call system library predicates and also <a class="lpdoc-idx-anchor" id="9" href="ciaopp_ref_mansearch.html#checking the assertions">checking the assertions</a> present in the program or in other modules used by the program. Such assertions represent essentially partial <a class="lpdoc-idx-anchor" id="10" href="ciaopp_ref_mansearch.html#specifications">specifications</a> of the program.<p><li>Several kinds of source to source <a class="lpdoc-idx-anchor" id="11" href="ciaopp_ref_mansearch.html#program transformations">program transformations</a> such as <a class="lpdoc-idx-anchor" id="12" href="ciaopp_ref_mansearch.html#program specialization">program specialization</a>, slicing, <a class="lpdoc-idx-anchor" id="13" href="ciaopp_ref_mansearch.html#partial evaluation">partial evaluation</a> of a program, <a class="lpdoc-idx-anchor" id="14" href="ciaopp_ref_mansearch.html#program parallelization">program parallelization</a> (taking <a class="lpdoc-idx-anchor" id="15" href="ciaopp_ref_mansearch.html#granularity control">granularity control</a> into account), inclusion of <a class="lpdoc-idx-anchor" id="16" href="ciaopp_ref_mansearch.html#run-time tests">run-time tests</a> for assertions which cannot be checked completely at compile-time, etc.<p><li>The abstract model of the program inferred by the analyzers can be used to certify that untrusted mobile code is safe w.r.t. a given policy (this implements the <em>abstraction-carrying code</em> approach to mobile code safety).<p></ul> <p>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 <a class="lpdoc-idx-anchor" id="17" href="ciaopp_ref_mansearch.html#assertion language">assertion language</a>, which is in turn also processed by the Ciao system documentation generator, <a class="lpdoc-idx-anchor" id="18" href="ciaopp_ref_mansearch.html#lpdoc"><tt>lpdoc</tt></a>.<p>CiaoPP is distributed under the <a class="lpdoc-idx-anchor" id="19" href="ciaopp_ref_mansearch.html#GNU general public license">GNU general public license</a>.<p> <p><p> <strong>Note:</strong> This is the CiaoPP <strong>reference</strong> manual. To begin using CiaoPP, we suggest you start by following one or more of the companion CiaoPP <strong>tutorials</strong> available in the Ciao system documentation. <br/><p>This documentation corresponds to version 1.5 (2022/3/2, 20:34:30 CET). </div><h2>Parts of this manual</h2><ul><li><a href="ciaopp_ref_manintro.html">Introduction</a></li><li><a href="part_usage.html">PART I - Using CiaoPP</a></li><li><a href="part_assertions.html">PART II - The Assertion Language and Its Use</a></li><li><a href="part_extensions.html">PART III - Extending CiaoPP</a></li><li><a href="part_internals.html">PART IV - CiaoPP Internals</a></li></ul><div class="lpdoc-footer">Generated with LPdoc using Ciao</div></div><div class="lpdoc-clearer"></div></div></body></html>