@ciao-lang/ts-ciao-interface
Version:
Simple Ciao interface for node.
152 lines • 101 kB
HTML
<!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>eterms: types with lnewiden_el/4 (abstract domain) — 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">☰</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="part_domains.html">↑</a><a class="lpdoc-navbutton" href="depthk.html">←</a><a class="lpdoc-navbutton" href="etermsvar.html">→</a><a class="lpdoc-navbutton" href="ciaopp_ref_mansearch.html">🔍</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> »<br/> </li><li><a href="part_usage.html">PART I - Using CiaoPP</a> »<br/> </li><li><a href="part_domains.html">Available abstract domains</a> »<br/> </li><li><a href=""><strong>eterms: types with lnewiden_el/4 (abstract domain)</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 multifiles">Documentation on multifiles</a></li><li><a href="#Documentation on imports">Documentation on imports</a></li></ul></div><div class="lpdoc-main"><div id=""><h1>eterms: types with lnewiden_el/4 (abstract domain)</h1><a class="lpdoc-idx-anchor" href="ciaopp_ref_mansearch.html#eterms"></a>
<strong>Author(s):</strong> <a class="lpdoc-idx-anchor" id="Claudio Vaucheret" href="ciaopp_ref_mansearch.html#Claudio Vaucheret">Claudio Vaucheret</a>, <a class="lpdoc-idx-anchor" id="Francisco Bueno" href="ciaopp_ref_mansearch.html#Francisco Bueno">Francisco Bueno</a>, <a class="lpdoc-idx-anchor" id="Ciao Development Team" href="ciaopp_ref_mansearch.html#Ciao Development Team">Ciao Development Team</a>.<p>
This module implements the abstract operations of the type domains with widening based on (<a class="lpdoc-idx-anchor" id="0" href="ciaopp_ref_mansearch.html#lnewiden_el/4"><tt>lnewiden_el/4</tt></a>). An abstract sustitution is a list of <tt>Var:(Name,Type)</tt> elements, where <span class="lpdoc-var">Var</span> is a variable and <span class="lpdoc-var">Type</span> is a pure type term [<a class="lpdoc-idx-anchor" id="1" href="ciaopp_ref_manrefs.html#Dart-Zobel">DZ92</a>].<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(domain(eterms)).</tt><li><strong>Exports:</strong><br/><ul class="lpdoc-itemize-minus"><li><em>Predicates:</em><br/><a class="lpdoc-idx-anchor" id="2" href="#get_type/3"><tt>get_type/3</tt></a>, <a class="lpdoc-idx-anchor" id="3" href="#eterms_init_abstract_domain/1"><tt>eterms_init_abstract_domain/1</tt></a>, <a class="lpdoc-idx-anchor" id="4" href="#eterms_compute_lub/2"><tt>eterms_compute_lub/2</tt></a>, <a class="lpdoc-idx-anchor" id="5" href="#eterms_compute_lub_el/3"><tt>eterms_compute_lub_el/3</tt></a>, <a class="lpdoc-idx-anchor" id="6" href="#eterms_widencall/3"><tt>eterms_widencall/3</tt></a>, <a class="lpdoc-idx-anchor" id="7" href="#eterms_needs/1"><tt>eterms_needs/1</tt></a>, <a class="lpdoc-idx-anchor" id="8" href="#eterms_widen/3"><tt>eterms_widen/3</tt></a>, <a class="lpdoc-idx-anchor" id="9" href="#eterms_call_to_entry/9"><tt>eterms_call_to_entry/9</tt></a>, <a class="lpdoc-idx-anchor" id="10" href="#eterms_exit_to_prime/7"><tt>eterms_exit_to_prime/7</tt></a>, <a class="lpdoc-idx-anchor" id="11" href="#replace_names/3"><tt>replace_names/3</tt></a>, <a class="lpdoc-idx-anchor" id="12" href="#normal_asub/2"><tt>normal_asub/2</tt></a>, <a class="lpdoc-idx-anchor" id="13" href="#update_names/2"><tt>update_names/2</tt></a>, <a class="lpdoc-idx-anchor" id="14" href="#generate_subs_exit/4"><tt>generate_subs_exit/4</tt></a>, <a class="lpdoc-idx-anchor" id="15" href="#generate_subs/3"><tt>generate_subs/3</tt></a>, <a class="lpdoc-idx-anchor" id="16" href="#eterms_project/5"><tt>eterms_project/5</tt></a>, <a class="lpdoc-idx-anchor" id="17" href="#eterms_abs_sort/2"><tt>eterms_abs_sort/2</tt></a>, <a class="lpdoc-idx-anchor" id="18" href="#eterms_extend/5"><tt>eterms_extend/5</tt></a>, <a class="lpdoc-idx-anchor" id="19" href="#eterms_less_or_equal/2"><tt>eterms_less_or_equal/2</tt></a>, <a class="lpdoc-idx-anchor" id="20" href="#eterms_glb/3"><tt>eterms_glb/3</tt></a>, <a class="lpdoc-idx-anchor" id="21" href="#eterms_glbnames/3"><tt>eterms_glbnames/3</tt></a>, <a class="lpdoc-idx-anchor" id="22" href="#eterms_concrete/3"><tt>eterms_concrete/3</tt></a>, <a class="lpdoc-idx-anchor" id="23" href="#eterms_unknown_entry/3"><tt>eterms_unknown_entry/3</tt></a>, <a class="lpdoc-idx-anchor" id="24" href="#eterms_empty_entry/3"><tt>eterms_empty_entry/3</tt></a>, <a class="lpdoc-idx-anchor" id="25" href="#eterms_unknown_call/4"><tt>eterms_unknown_call/4</tt></a>, <a class="lpdoc-idx-anchor" id="26" href="#variables_are_top_type/2"><tt>variables_are_top_type/2</tt></a>, <a class="lpdoc-idx-anchor" id="27" href="#eterms_call_to_success_fact/9"><tt>eterms_call_to_success_fact/9</tt></a>, <a class="lpdoc-idx-anchor" id="28" href="#eterms_special_builtin/5"><tt>eterms_special_builtin/5</tt></a>, <a class="lpdoc-idx-anchor" id="29" href="#eterms_success_builtin/6"><tt>eterms_success_builtin/6</tt></a>, <a class="lpdoc-idx-anchor" id="30" href="#keys_same_value/3"><tt>keys_same_value/3</tt></a>, <a class="lpdoc-idx-anchor" id="31" href="#eterms_arg_call_to_success/9"><tt>eterms_arg_call_to_success/9</tt></a>, <a class="lpdoc-idx-anchor" id="32" href="#eterms_call_to_success_builtin/6"><tt>eterms_call_to_success_builtin/6</tt></a>, <a class="lpdoc-idx-anchor" id="33" href="#eterms_obtain_info/4"><tt>eterms_obtain_info/4</tt></a>, <a class="lpdoc-idx-anchor" id="34" href="#eterms_input_user_interface/5"><tt>eterms_input_user_interface/5</tt></a>, <a class="lpdoc-idx-anchor" id="35" href="#eterms_input_interface/4"><tt>eterms_input_interface/4</tt></a>, <a class="lpdoc-idx-anchor" id="36" href="#eterms_asub_to_native/5"><tt>eterms_asub_to_native/5</tt></a>, <a class="lpdoc-idx-anchor" id="37" href="#eterms_output_interface/2"><tt>eterms_output_interface/2</tt></a>, <a class="lpdoc-idx-anchor" id="38" href="#eterms_collect_auxinfo_asub/3"><tt>eterms_collect_auxinfo_asub/3</tt></a>, <a class="lpdoc-idx-anchor" id="39" href="#eterms_rename_auxinfo_asub/3"><tt>eterms_rename_auxinfo_asub/3</tt></a>, <a class="lpdoc-idx-anchor" id="40" href="#eterms_identical_abstract/2"><tt>eterms_identical_abstract/2</tt></a>, <a class="lpdoc-idx-anchor" id="41" href="#getargtypes/6"><tt>getargtypes/6</tt></a>, <a class="lpdoc-idx-anchor" id="42" href="#replacetype/4"><tt>replacetype/4</tt></a>, <a class="lpdoc-idx-anchor" id="43" href="#getfunctors/2"><tt>getfunctors/2</tt></a>, <a class="lpdoc-idx-anchor" id="44" href="#split_f/4"><tt>split_f/4</tt></a>, <a class="lpdoc-idx-anchor" id="45" href="#getvalue/2"><tt>getvalue/2</tt></a>, <a class="lpdoc-idx-anchor" id="46" href="#unifytoterm/1"><tt>unifytoterm/1</tt></a>, <a class="lpdoc-idx-anchor" id="47" href="#abs_eval_arithcomp/4"><tt>abs_eval_arithcomp/4</tt></a>, <a class="lpdoc-idx-anchor" id="48" href="#generateSucc0_cond/5"><tt>generateSucc0_cond/5</tt></a>, <a class="lpdoc-idx-anchor" id="49" href="#abs_eval_arith/3"><tt>abs_eval_arith/3</tt></a>, <a class="lpdoc-idx-anchor" id="50" href="#getvalues_comp_cond/3"><tt>getvalues_comp_cond/3</tt></a>, <a class="lpdoc-idx-anchor" id="51" href="#get_list_names_is/2"><tt>get_list_names_is/2</tt></a>, <a class="lpdoc-idx-anchor" id="52" href="#determinate_sel/3"><tt>determinate_sel/3</tt></a>, <a class="lpdoc-idx-anchor" id="53" href="#replaceintype/5"><tt>replaceintype/5</tt></a>, <a class="lpdoc-idx-anchor" id="54" href="#eterms_multi_part_conc/3"><tt>eterms_multi_part_conc/3</tt></a>, <a class="lpdoc-idx-anchor" id="55" href="#eterms_part_conc/4"><tt>eterms_part_conc/4</tt></a>, <a class="lpdoc-idx-anchor" id="56" href="#obtains_names/4"><tt>obtains_names/4</tt></a>.
<li><em>Multifiles:</em><br/><a class="lpdoc-idx-anchor" id="57" href="auto_interface.html#aidomain/1"><tt>aidomain/1</tt></a>, <a class="lpdoc-idx-anchor" id="58" href="aeq.html#aidom.init_abstract_domain/2"><tt>aidom.init_abstract_domain/2</tt></a>, <a class="lpdoc-idx-anchor" id="59" href="aeq.html#aidom.amgu/5"><tt>aidom.amgu/5</tt></a>, <a class="lpdoc-idx-anchor" id="60" href="aeq.html#aidom.augment_asub/4"><tt>aidom.augment_asub/4</tt></a>, <a class="lpdoc-idx-anchor" id="61" href="aeq.html#aidom.augment_two_asub/4"><tt>aidom.augment_two_asub/4</tt></a>, <a class="lpdoc-idx-anchor" id="62" href="aeq.html#aidom.call_to_entry/10"><tt>aidom.call_to_entry/10</tt></a>, <a class="lpdoc-idx-anchor" id="63" href="aeq.html#aidom.exit_to_prime/8"><tt>aidom.exit_to_prime/8</tt></a>, <a class="lpdoc-idx-anchor" id="64" href="aeq.html#aidom.project/6"><tt>aidom.project/6</tt></a>, <a class="lpdoc-idx-anchor" id="65" href="aeq.html#aidom.widencall/4"><tt>aidom.widencall/4</tt></a>, <a class="lpdoc-idx-anchor" id="66" href="aeq.html#aidom.needs/2"><tt>aidom.needs/2</tt></a>, <a class="lpdoc-idx-anchor" id="67" href="aeq.html#aidom.widen/4"><tt>aidom.widen/4</tt></a>, <a class="lpdoc-idx-anchor" id="68" href="aeq.html#aidom.compute_lub/3"><tt>aidom.compute_lub/3</tt></a>, <a class="lpdoc-idx-anchor" id="69" href="aeq.html#aidom.compute_clauses_lub/4"><tt>aidom.compute_clauses_lub/4</tt></a>, <a class="lpdoc-idx-anchor" id="70" href="aeq.html#aidom.compute_clauses_glb/4"><tt>aidom.compute_clauses_glb/4</tt></a>, <a class="lpdoc-idx-anchor" id="71" href="aeq.html#aidom.fixpoint_covered/3"><tt>aidom.fixpoint_covered/3</tt></a>, <a class="lpdoc-idx-anchor" id="72" href="aeq.html#aidom.fixpoint_covered_gfp/3"><tt>aidom.fixpoint_covered_gfp/3</tt></a>, <a class="lpdoc-idx-anchor" id="73" href="aeq.html#aidom.identical_abstract/3"><tt>aidom.identical_abstract/3</tt></a>, <a class="lpdoc-idx-anchor" id="74" href="aeq.html#aidom.abs_sort/3"><tt>aidom.abs_sort/3</tt></a>, <a class="lpdoc-idx-anchor" id="75" href="aeq.html#aidom.extend/6"><tt>aidom.extend/6</tt></a>, <a class="lpdoc-idx-anchor" id="76" href="aeq.html#aidom.less_or_equal/3"><tt>aidom.less_or_equal/3</tt></a>, <a class="lpdoc-idx-anchor" id="77" href="aeq.html#aidom.glb/4"><tt>aidom.glb/4</tt></a>, <a class="lpdoc-idx-anchor" id="78" href="aeq.html#aidom.eliminate_equivalent/3"><tt>aidom.eliminate_equivalent/3</tt></a>, <a class="lpdoc-idx-anchor" id="79" href="aeq.html#aidom.abs_subset/3"><tt>aidom.abs_subset/3</tt></a>, <a class="lpdoc-idx-anchor" id="80" href="aeq.html#aidom.call_to_success_fact/10"><tt>aidom.call_to_success_fact/10</tt></a>, <a class="lpdoc-idx-anchor" id="81" href="aeq.html#aidom.special_builtin/6"><tt>aidom.special_builtin/6</tt></a>, <a class="lpdoc-idx-anchor" id="82" href="aeq.html#aidom.combined_special_builtin0/3"><tt>aidom.combined_special_builtin0/3</tt></a>, <a class="lpdoc-idx-anchor" id="83" href="aeq.html#aidom.body_succ_builtin/9"><tt>aidom.body_succ_builtin/9</tt></a>, <a class="lpdoc-idx-anchor" id="84" href="aeq.html#aidom.split_combined_domain/4"><tt>aidom.split_combined_domain/4</tt></a>, <a class="lpdoc-idx-anchor" id="85" href="aeq.html#aidom.success_builtin/7"><tt>aidom.success_builtin/7</tt></a>, <a class="lpdoc-idx-anchor" id="86" href="aeq.html#aidom.call_to_success_builtin/7"><tt>aidom.call_to_success_builtin/7</tt></a>, <a class="lpdoc-idx-anchor" id="87" href="aeq.html#aidom.obtain_info/5"><tt>aidom.obtain_info/5</tt></a>, <a class="lpdoc-idx-anchor" id="88" href="aeq.html#aidom.input_interface/5"><tt>aidom.input_interface/5</tt></a>, <a class="lpdoc-idx-anchor" id="89" href="aeq.html#aidom.input_user_interface/6"><tt>aidom.input_user_interface/6</tt></a>, <a class="lpdoc-idx-anchor" id="90" href="aeq.html#aidom.asub_to_native/6"><tt>aidom.asub_to_native/6</tt></a>, <a class="lpdoc-idx-anchor" id="91" href="aeq.html#aidom.concrete/4"><tt>aidom.concrete/4</tt></a>, <a class="lpdoc-idx-anchor" id="92" href="aeq.html#aidom.unknown_call/5"><tt>aidom.unknown_call/5</tt></a>, <a class="lpdoc-idx-anchor" id="93" href="aeq.html#aidom.unknown_entry/4"><tt>aidom.unknown_entry/4</tt></a>, <a class="lpdoc-idx-anchor" id="94" href="aeq.html#aidom.empty_entry/4"><tt>aidom.empty_entry/4</tt></a>, <a class="lpdoc-idx-anchor" id="95" href="aeq.html#aidom.part_conc/5"><tt>aidom.part_conc/5</tt></a>, <a class="lpdoc-idx-anchor" id="96" href="aeq.html#aidom.multi_part_conc/4"><tt>aidom.multi_part_conc/4</tt></a>, <a class="lpdoc-idx-anchor" id="97" href="aeq.html#aidom.collect_auxinfo_asub/4"><tt>aidom.collect_auxinfo_asub/4</tt></a>, <a class="lpdoc-idx-anchor" id="98" href="aeq.html#aidom.rename_auxinfo_asub/4"><tt>aidom.rename_auxinfo_asub/4</tt></a>, <a class="lpdoc-idx-anchor" id="99" href="aeq.html#aidom.dom_statistics/2"><tt>aidom.dom_statistics/2</tt></a>, <a class="lpdoc-idx-anchor" id="100" href="aeq.html#aidom.contains_parameters/2"><tt>aidom.contains_parameters/2</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="get_type/3" href="ciaopp_ref_mansearch.html#get_type/3">get_type/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_init_abstract_domain/1" href="ciaopp_ref_mansearch.html#eterms_init_abstract_domain/1">eterms_init_abstract_domain/1</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_compute_lub/2" href="ciaopp_ref_mansearch.html#eterms_compute_lub/2">eterms_compute_lub/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_compute_lub(ListASub,Lub)</tt>
</span><p>It computes the least upper bound of a set of abstract substitutions. For each two abstract substitutions <span class="lpdoc-var">ASub1</span> and <span class="lpdoc-var">ASub2</span> in <span class="lpdoc-var">ListASub</span>, obtaining the lub is foreach X:Type1 in <span class="lpdoc-var">ASub1</span> and X:Type2 in <span class="lpdoc-var">ASub2</span>, X:TypeUnion is in Lub, and TypeUnion is the deterministic union of Type1 an Type2.</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="101" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ListASub</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="102" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Lub</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="103" href="basic_props.html#list/2"><tt>list/2</tt></a>)</span><span><span class="lpdoc-var">ListASub</span> is a list of <span class="lpdoc-var">eterms_asub</span>s.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="104" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Lub</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_compute_lub_el/3" href="ciaopp_ref_mansearch.html#eterms_compute_lub_el/3">eterms_compute_lub_el/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_widencall/3" href="ciaopp_ref_mansearch.html#eterms_widencall/3">eterms_widencall/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_needs/1" href="ciaopp_ref_mansearch.html#eterms_needs/1">eterms_needs/1</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_widen/3" href="ciaopp_ref_mansearch.html#eterms_widen/3">eterms_widen/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_widen(Prime0,Prime1,NewPrime)</tt>
</span><p>Induction step on the abstract substitution of a fixpoint. <span class="lpdoc-var">Prime0</span> corresponds to non-recursive and <span class="lpdoc-var">Prime1</span> to recursive clauses. <span class="lpdoc-var">NewPrime</span> is the result of apply one widening operation to the least upper bound of the formers.</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="105" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Prime0</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="106" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Prime1</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="107" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">NewPrime</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="108" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Prime0</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="109" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Prime1</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="110" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">NewPrime</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="111" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">NewPrime</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_call_to_entry/9" href="ciaopp_ref_mansearch.html#eterms_call_to_entry/9">eterms_call_to_entry/9</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_call_to_entry(Sv,Sg,Hv,Head,K,Fv,Proj,Entry,ExtraInfo)</tt>
</span><p>It obtains the abstract substitution <span class="lpdoc-var">Entry</span> which results from adding the abstraction of the <span class="lpdoc-var">Sg</span> = <span class="lpdoc-var">Head</span> to <span class="lpdoc-var">Proj</span>, later projecting the resulting substitution onto <span class="lpdoc-var">Hv</span>.<p>This is done as follows: <ul> <li>If <span class="lpdoc-var">Sg</span> and <span class="lpdoc-var">Head</span> are identical up to renaming it is just renaming <span class="lpdoc-var">Proj</span> and adding the <span class="lpdoc-var">Fv</span> <li>Otherwise, it will <ul> <li>obtain the abstract substitution from unifying <span class="lpdoc-var">Sg</span> and <span class="lpdoc-var">Head</span> calling ``unify_term_and_type_term'' <li>add to this abstract substitution the variables in Fv as term type. </ul> </ul> <p>The meaning of the variables is <ul> <li><span class="lpdoc-var">Sg</span> is the subgoal being analysed. <li><span class="lpdoc-var">Head</span> is the Head of the clause being analysed. <li><span class="lpdoc-var">Fv</span> is a list of free variables in the body of the clause being considered. <li><span class="lpdoc-var">Proj</span> is the abstract substitution <span class="lpdoc-var">Call</span> projected onto <span class="lpdoc-var">Sv</span>. <li><span class="lpdoc-var">Entry</span> is the Abstract entry substitution (i.e. the abstract subtitution obtained after the abstract unification of <span class="lpdoc-var">Sg</span> and <span class="lpdoc-var">Head</span> projected onto <span class="lpdoc-var">Hv</span> + <span class="lpdoc-var">Fv</span>). <li><span class="lpdoc-var">ExtraInfo</span>is a flag ``yes'' when no unification is required, i.e., Entry=Proj upto names of vars. and ignoring Fv. It is ``no'' if unification fails. </ul></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="112" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="113" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="114" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Hv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="115" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Head</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="116" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="117" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Fv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="118" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Proj</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="119" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Entry</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="120" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">ExtraInfo</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="121" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Sv</span> is any term.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="122" href="basic_props.html#cgoal/1"><tt>cgoal/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is a term which represents a goal, i.e., an atom or a structure.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="123" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Hv</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="124" href="basic_props.html#cgoal/1"><tt>cgoal/1</tt></a>)</span><span><span class="lpdoc-var">Head</span> is a term which represents a goal, i.e., an atom or a structure.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="125" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is any term.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="126" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Fv</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="127" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Proj</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="128" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Entry</span> is any term.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="129" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">ExtraInfo</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="130" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Entry</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="132" href="ciaopp_ref_mansearch.html#eterms_extrainfo/1"><tt>eterms_extrainfo/1</tt></a>)</span><span><a class="lpdoc-idx-anchor" id="131" href="ciaopp_ref_mansearch.html#eterms_extrainfo(ExtraInfo)"><tt>eterms_extrainfo(ExtraInfo)</tt></a>
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_exit_to_prime/7" href="ciaopp_ref_mansearch.html#eterms_exit_to_prime/7">eterms_exit_to_prime/7</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_exit_to_prime(Sg,Hv,Head,Sv,Exit,ExtraInfo,Prime)</tt>
</span><p>It computes the prime abstract substitution <span class="lpdoc-var">Prime</span>, i.e. the result of going from the abstract substitution over the head variables <span class="lpdoc-var">Exit</span>, to the abstract substitution over the variables in the subgoal. It will: <ul> <li>If <span class="lpdoc-var">Exit</span> is '$bottom', <span class="lpdoc-var">Prime</span> will be also '$bottom'. <li>If <span class="lpdoc-var">ExtraInfo</span> = yes (<span class="lpdoc-var">Head</span> and <span class="lpdoc-var">Sg</span> identical up to renaming) it is just renaming Exit % <li>Otherwise, it will: <ul> <li>projects <span class="lpdoc-var">Exit</span> onto <span class="lpdoc-var">Hv</span> obtaining <span class="lpdoc-var">BPrime</span>. <li>obtain the abstract substitution from unifying <span class="lpdoc-var">Sg</span> and <span class="lpdoc-var">Head</span> calling ``unify_term_and_type_term'' </ul> </ul></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="133" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="134" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Hv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="135" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Head</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="136" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="137" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Exit</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="138" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">ExtraInfo</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="139" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Prime</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="140" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="141" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Hv</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="142" href="basic_props.html#cgoal/1"><tt>cgoal/1</tt></a>)</span><span><span class="lpdoc-var">Head</span> is a term which represents a goal, i.e., an atom or a structure.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="143" href="basic_props.html#cgoal/1"><tt>cgoal/1</tt></a>)</span><span><span class="lpdoc-var">Sv</span> is a term which represents a goal, i.e., an atom or a structure.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="144" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Exit</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="145" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">ExtraInfo</span> is any term.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="146" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Prime</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="148" href="ciaopp_ref_mansearch.html#eterms_extrainfo/1"><tt>eterms_extrainfo/1</tt></a>)</span><span><a class="lpdoc-idx-anchor" id="147" href="ciaopp_ref_mansearch.html#eterms_extrainfo(ExtraInfo)"><tt>eterms_extrainfo(ExtraInfo)</tt></a>
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="149" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Prime</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="replace_names/3" href="ciaopp_ref_mansearch.html#replace_names/3">replace_names/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="normal_asub/2" href="ciaopp_ref_mansearch.html#normal_asub/2">normal_asub/2</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="update_names/2" href="ciaopp_ref_mansearch.html#update_names/2">update_names/2</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="generate_subs_exit/4" href="ciaopp_ref_mansearch.html#generate_subs_exit/4">generate_subs_exit/4</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="generate_subs/3" href="ciaopp_ref_mansearch.html#generate_subs/3">generate_subs/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_project/5" href="ciaopp_ref_mansearch.html#eterms_project/5">eterms_project/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_project(Sg,Vars,HvFv_u,ASub,Proj)</tt>
</span><p><span class="lpdoc-var">Proj</span> is the result of eliminating from <span class="lpdoc-var">ASub</span> all <span class="lpdoc-var">X</span>:<span class="lpdoc-var">Value</span> such that <span class="lpdoc-var">X</span> is not in <span class="lpdoc-var">Vars</span>.</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="150" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="151" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Vars</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="152" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">HvFv_u</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="153" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ASub</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="154" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Proj</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="155" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is any term.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="156" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Vars</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="157" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">HvFv_u</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="158" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="159" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Proj</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="160" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Proj</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_abs_sort/2" href="ciaopp_ref_mansearch.html#eterms_abs_sort/2">eterms_abs_sort/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_abs_sort(ASub,ASub_s)</tt>
</span><p>It sorts the set of <span class="lpdoc-var">X</span>:<span class="lpdoc-var">Type</span> in <span class="lpdoc-var">ASub</span> ontaining <span class="lpdoc-var">ASub_s</span></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="161" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ASub</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="162" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">ASub_s</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="163" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub</span> is an abstract substitution
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="164" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub_s</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_extend/5" href="ciaopp_ref_mansearch.html#eterms_extend/5">eterms_extend/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_extend(Sg,Prime,Sv,Call,Succ)</tt>
</span><p>If <span class="lpdoc-var">Prime</span> = '$bottom', <span class="lpdoc-var">Succ</span> = '$bottom' otherwise, <span class="lpdoc-var">Succ</span> is computed updating the values of <span class="lpdoc-var">Call</span> with those in <span class="lpdoc-var">Prime</span></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="165" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="166" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Prime</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="167" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="168" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Call</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="169" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Succ</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="170" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is any term.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="171" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Prime</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="172" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Sv</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="173" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Call</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="174" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Succ</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="175" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Succ</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_less_or_equal/2" href="ciaopp_ref_mansearch.html#eterms_less_or_equal/2">eterms_less_or_equal/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_less_or_equal(ASub0,ASub1)</tt>
</span><p>Succeeds if <span class="lpdoc-var">ASub1</span> is more general or equal to <span class="lpdoc-var">ASub0</span>. it's assumed the two abstract substitutions are defined on the same variables</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="176" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ASub0</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="177" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ASub1</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="178" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub0</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="179" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub1</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_glb/3" href="ciaopp_ref_mansearch.html#eterms_glb/3">eterms_glb/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_glb(ASub0,ASub1,Glb)</tt>
</span><p><span class="lpdoc-var">Glb</span> is the great lower bound of <span class="lpdoc-var">ASub0</span> and <span class="lpdoc-var">ASub1</span></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="180" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ASub0</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="181" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">ASub1</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="182" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Glb</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="183" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub0</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="184" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">ASub1</span> is an abstract substitution
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="185" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Glb</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="186" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Glb</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_glbnames/3" href="ciaopp_ref_mansearch.html#eterms_glbnames/3">eterms_glbnames/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_concrete/3" href="ciaopp_ref_mansearch.html#eterms_concrete/3">eterms_concrete/3</a></div><div class="lpdoc-deftext">No further documentation available for this predicate.</div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_unknown_entry/3" href="ciaopp_ref_mansearch.html#eterms_unknown_entry/3">eterms_unknown_entry/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_unknown_entry(Sg,Qv,Call)</tt>
</span><p>Gives the ``top'' value for the variables involved in a literal whose definition is not present, and adds this top value to Call. In this domain the top value is X:term forall X in the set of variables</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="187" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="188" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Qv</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="189" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Call</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="190" href="basic_props.html#cgoal/1"><tt>cgoal/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is a term which represents a goal, i.e., an atom or a structure.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="191" href="basic_props.html#list/1"><tt>list/1</tt></a>)</span><span><span class="lpdoc-var">Qv</span> is a list.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="192" href="basic_props.html#term/1"><tt>term/1</tt></a>)</span><span><span class="lpdoc-var">Call</span> is any term.
</span>
<li><em>The following properties should hold upon exit:</em><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="193" href="ciaopp_ref_mansearch.html#eterms_asub/1"><tt>eterms_asub/1</tt></a>)</span><span><span class="lpdoc-var">Call</span> is an abstract substitution
</span>
</ul></div></div><p>
<div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="eterms_empty_entry/3" href="ciaopp_ref_mansearch.html#eterms_empty_entry/3">eterms_empty_entry/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>eterms_empty_entry(Sg,Vars,Entry)</tt>
</span><p>Gives the "empty" value in this domain for a given set of variables <span class="lpdoc-var">Vars</span>, resulting in the abstract substitution <span class="lpdoc-var">Entry</span>. I.e., obtains the abstraction of a substitution in which all variables <span class="lpdoc-var">Vars</span> are unbound: free and unaliased. In this domain the empty value is giving the variable type to each variable</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="194" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="195" href="ciaopp_ref_mansearch.html#nonvar/1"><tt>nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Vars</span> is currently a term which is not a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="196" href="ciaopp_ref_mansearch.html#var/1"><tt>var/1</tt></a>)</span><span><span class="lpdoc-var">Entry</span> is a free variable.
</span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="197" href="basic_props.html#cgoal/1"><tt>cgoal/1</tt></a>)</span><span><span class="lpdoc-var">Sg</span> is a term which represents a goal, i.e., an atom or a structure.
</span><br/><span class="lpdoc-on-right"> (<a