UNPKG

@ciao-lang/ts-ciao-interface

Version:

Simple Ciao interface for node.

37 lines 13.8 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>Update plai_db after clause deletion (incremental analysis) &mdash; 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="incanal.html">&#x2191;</a><a class="lpdoc-navbutton" href="incanal_driver.html">&#x2190;</a><a class="lpdoc-navbutton" href="incanal_db.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="ciaopp_ref_man.html">The CiaoPP Program Processor</a> &raquo;<br/> </li><li><a href="part_internals.html">PART IV - CiaoPP Internals</a> &raquo;<br/> </li><li><a href="incanal.html">Incremental analysis (high level)</a> &raquo;<br/> </li><li><a href=""><strong>Update plai_db after clause deletion (incremental analysis)</strong></a></li></ul><hr></hr><em>ON THIS PAGE</em><ul><li><a href="#Usage and interface">Usage and interface</a></li><li><a href="#Documentation on exports">Documentation on exports</a></li><li><a href="#Documentation on imports">Documentation on imports</a></li></ul></div><div class="lpdoc-main"><div id=""><h1>Update plai_db after clause deletion (incremental analysis)</h1><a class="lpdoc-idx-anchor" href="ciaopp_ref_mansearch.html#incanal_deletion"></a> <strong>Author(s):</strong> <a class="lpdoc-idx-anchor" id="Isabel Garcia-Contreras" href="ciaopp_ref_mansearch.html#Isabel Garcia-Contreras">Isabel Garcia-Contreras (ported from ciaopp-0.8)</a>.<p> This module contains predicates for removing completes and related memo_table data from analysis necessary for recomputing correctly analysis after removing clauses or modifying the answers of the analysis.<br/><div id="Usage and interface"><h2>Usage and interface</h2><div class="lpdoc-cartouche"><ul><li><strong>Library usage:</strong><br/><tt>:- use_module(ciaopp(plai/incanal/incanal_deletion)).</tt><li><strong>Exports:</strong><br/><ul class="lpdoc-itemize-minus"><li><em>Predicates:</em><br/><a class="lpdoc-idx-anchor" id="0" href="#remove_clauses_and_related_info_collect_preds/4"><tt>remove_clauses_and_related_info_collect_preds/4</tt></a>, <a class="lpdoc-idx-anchor" id="1" href="#bottom_up_delete_completes_preds/4"><tt>bottom_up_delete_completes_preds/4</tt></a>, <a class="lpdoc-idx-anchor" id="2" href="#bottom_up_delete_complete/5"><tt>bottom_up_delete_complete/5</tt></a>, <a class="lpdoc-idx-anchor" id="3" href="#external_calls/4"><tt>external_calls/4</tt></a>. </ul></ul></div></div><div id="Documentation on exports"><h2>Documentation on exports</h2><div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="remove_clauses_and_related_info_collect_preds/4" href="ciaopp_ref_mansearch.html#remove_clauses_and_related_info_collect_preds/4">remove_clauses_and_related_info_collect_preds/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>remove_clauses_and_related_info_collect_preds(ClKeys,AbsInt,Preds,Keys)</tt> </span><p><span class="lpdoc-var">Cls</span> is a set of clauses which has have been eliminated from the program. Thus, they must be deleted from the database of clauses used by the analyzer. In addition to the clause, we delete all the memo_tables and memo_lubs for the clauses. In <span class="lpdoc-var">Preds</span> and <span class="lpdoc-var">Keys</span> we collect the name,arity and keys of predicates for which clauses have been deleted. This will later be used for updating the SCCs.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="4" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ClKeys</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="5" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">AbsInt</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="6" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Preds</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="7" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Keys</span> is a free variable. </span> <li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="8" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">remove_clauses_and_related_info_collect_preds(ClKeys,AbsInt,Preds,Keys)</span> do not fail. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="9" href="native_props_nfdet_doc.html#is_det/1"><tt>is_det/1</tt></a>)</span><span>All calls of the form <span class="lpdoc-var">remove_clauses_and_related_info_collect_preds(ClKeys,AbsInt,Preds,Keys)</span> are deterministic. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="bottom_up_delete_completes_preds/4" href="ciaopp_ref_mansearch.html#bottom_up_delete_completes_preds/4">bottom_up_delete_completes_preds/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>bottom_up_delete_completes_preds(Keys,SCCs,AbsInt,ExtCompletes)</tt> </span><p><span class="lpdoc-var">Keys</span> is the list of keys of predicates for which clauses have been deleted. The completes for such predicates may no longer be accurate enough. Thus we collect the external calls in <span class="lpdoc-var">ExtCompletes</span> and erase the corresponding completes from the analysis database.</p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="10" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Keys</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="11" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">AbsInt</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="12" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">ExtCompletes</span> is a free variable. </span> <li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="13" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">bottom_up_delete_completes_preds(Keys,SCCs,AbsInt,ExtCompletes)</span> do not fail. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="bottom_up_delete_complete/5" href="ciaopp_ref_mansearch.html#bottom_up_delete_complete/5">bottom_up_delete_complete/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>bottom_up_delete_complete(SgKey,Id,SCC,AbsInt,ExtCompletes)</tt> </span><p></p><ul class="lpdoc-itemize-minus"><li><em>The following properties should hold at call time:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="14" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">SgKey</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="15" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Id</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="16" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">SCC</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="17" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">AbsInt</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="18" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">ExtCompletes</span> is a free variable. </span> <li><em>The following properties should hold globally:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="19" href="native_props_nfdet_doc.html#not_fails/1"><tt>not_fails/1</tt></a>)</span><span>All the calls of the form <span class="lpdoc-var">bottom_up_delete_complete(SgKey,Id,SCC,AbsInt,ExtCompletes)</span> do not fail. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="external_calls/4" href="ciaopp_ref_mansearch.html#external_calls/4">external_calls/4</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p> </div><div id="Documentation on imports"><h2>Documentation on imports</h2>This module has the following direct dependencies:<ul class="lpdoc-itemize-minus"><li><em>Application modules:</em><br/><a class="lpdoc-idx-anchor" id="20" href="ciaopp_ref_mansearch.html#tarjan"><tt>tarjan</tt></a>, <a class="lpdoc-idx-anchor" id="21" href="domains.html"><tt>domains</tt></a>, <a class="lpdoc-idx-anchor" id="22" href="plai_db.html"><tt>plai_db</tt></a>, <a class="lpdoc-idx-anchor" id="23" href="ciaopp_ref_mansearch.html#transform"><tt>transform</tt></a>, <a class="lpdoc-idx-anchor" id="24" href="ciaopp_ref_mansearch.html#plai_db_comparator"><tt>plai_db_comparator</tt></a>. <li><em>System library modules:</em><br/><a class="lpdoc-idx-anchor" id="25" href="ciaopp_ref_mansearch.html#native_props"><tt>native_props</tt></a>, <a class="lpdoc-idx-anchor" id="26" href="ciaopp_ref_mansearch.html#datafacts_rt"><tt>datafacts_rt</tt></a>, <a class="lpdoc-idx-anchor" id="27" href="program_keys.html"><tt>program_keys</tt></a>, <a class="lpdoc-idx-anchor" id="28" href="ciaopp_ref_mansearch.html#sort"><tt>sort</tt></a>, <a class="lpdoc-idx-anchor" id="29" href="ciaopp_ref_mansearch.html#aggregates"><tt>aggregates</tt></a>, <a class="lpdoc-idx-anchor" id="30" href="ciaopp_ref_mansearch.html#lists"><tt>lists</tt></a>. <li><em>Internal (engine) modules:</em><br/><a class="lpdoc-idx-anchor" id="31" href="ciaopp_ref_mansearch.html#term_basic"><tt>term_basic</tt></a>, <a class="lpdoc-idx-anchor" id="32" href="ciaopp_ref_mansearch.html#arithmetic"><tt>arithmetic</tt></a>, <a class="lpdoc-idx-anchor" id="33" href="ciaopp_ref_mansearch.html#atomic_basic"><tt>atomic_basic</tt></a>, <a class="lpdoc-idx-anchor" id="34" href="ciaopp_ref_mansearch.html#basiccontrol"><tt>basiccontrol</tt></a>, <a class="lpdoc-idx-anchor" id="35" href="ciaopp_ref_mansearch.html#exceptions"><tt>exceptions</tt></a>, <a class="lpdoc-idx-anchor" id="36" href="ciaopp_ref_mansearch.html#term_compare"><tt>term_compare</tt></a>, <a class="lpdoc-idx-anchor" id="37" href="ciaopp_ref_mansearch.html#term_typing"><tt>term_typing</tt></a>, <a class="lpdoc-idx-anchor" id="38" href="ciaopp_ref_mansearch.html#debugger_support"><tt>debugger_support</tt></a>, <a class="lpdoc-idx-anchor" id="39" href="basic_props.html"><tt>basic_props</tt></a>, <a class="lpdoc-idx-anchor" id="40" href="ciaopp_ref_mansearch.html#hiord_rt"><tt>hiord_rt</tt></a>. <li><em>Packages:</em><br/><a class="lpdoc-idx-anchor" id="41" href="ciaopp_ref_mansearch.html#prelude"><tt>prelude</tt></a>, <a class="lpdoc-idx-anchor" id="42" href="ciaopp_ref_mansearch.html#initial"><tt>initial</tt></a>, <a class="lpdoc-idx-anchor" id="43" href="ciaopp_ref_mansearch.html#condcomp"><tt>condcomp</tt></a>, <a class="lpdoc-idx-anchor" id="44" href="assertions_doc.html"><tt>assertions</tt></a>, <a class="lpdoc-idx-anchor" id="45" href="ciaopp_ref_mansearch.html#assertions/assertions_basic"><tt>assertions/assertions_basic</tt></a>, <a class="lpdoc-idx-anchor" id="46" href="ciaopp_ref_mansearch.html#isomodes"><tt>isomodes</tt></a>, <a class="lpdoc-idx-anchor" id="47" href="ciaopp_ref_mansearch.html#nativeprops"><tt>nativeprops</tt></a>, <a class="lpdoc-idx-anchor" id="48" href="ciaopp_ref_mansearch.html#datafacts"><tt>datafacts</tt></a>, <a class="lpdoc-idx-anchor" id="49" href="ciaopp_ref_mansearch.html#ciaopp(plai/notrace)"><tt>ciaopp(plai/notrace)</tt></a>. </ul></div></div><div class="lpdoc-footer">Generated with LPdoc using Ciao</div></div><div class="lpdoc-clearer"></div></div></body></html>