UNPKG

@ciao-lang/ts-ciao-interface

Version:

Simple Ciao interface for node.

199 lines 59 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>Association between key and value &mdash; The Ciao System v1.22</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="DataStructuresAlgs.html">&#x2191;</a><a class="lpdoc-navbutton" href="arrays.html">&#x2190;</a><a class="lpdoc-navbutton" href="keys.html">&#x2192;</a><a class="lpdoc-navbutton" href="ciaosearch.html">&#x1F50D;</a></span><span><a href="ciaofulltoc.html">TOC</a></span></div><hr></hr><ul class="lpdoc-itemize-sectpath"><li><a href="ciao.html">The Ciao System</a> &raquo;<br/> </li><li><a href="DataStructuresAlgs.html">PART VI - Data structures and algorithms</a> &raquo;<br/> </li><li><a href=""><strong>Association between key and value</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>Association between key and value</h1><a class="lpdoc-idx-anchor" href="ciaosearch.html#assoc"></a> <strong>Author(s):</strong> <a class="lpdoc-idx-anchor" id="Pablo Chico" href="ciaosearch.html#Pablo Chico">Pablo Chico</a>, <a class="lpdoc-idx-anchor" id="Manuel Carro" href="ciaosearch.html#Manuel Carro">Manuel Carro</a>.<p> This library implements a table. It takes its name from the classical &quot;association lists&quot;. It allows storing a set of values and a key for each value, such that the values can later be accessed through these keys. These keys could not be ground terms, but they could not be instantiated later (so, this implementation unify with &apos;==&apos; instead of &apos;=&apos;). The implementation uses a dynamically changing data structure for efficiency. When there are few elements the data structure used is a list of pairs. When the number of elements stored goes beyond some number, an AVL tree is used. There is a certain level of hysteresis so that no repeated data structure conversions occur when the number of elements is close to the threshold.<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(library(assoc)).</tt><li><strong>Exports:</strong><br/><ul class="lpdoc-itemize-minus"><li><em>Predicates:</em><br/><a class="lpdoc-idx-anchor" id="0" href="#empty_assoc/1"><tt>empty_assoc/1</tt></a>, <a class="lpdoc-idx-anchor" id="1" href="#assoc_to_list/2"><tt>assoc_to_list/2</tt></a>, <a class="lpdoc-idx-anchor" id="2" href="#is_assoc/1"><tt>is_assoc/1</tt></a>, <a class="lpdoc-idx-anchor" id="3" href="#min_assoc/3"><tt>min_assoc/3</tt></a>, <a class="lpdoc-idx-anchor" id="4" href="#max_assoc/3"><tt>max_assoc/3</tt></a>, <a class="lpdoc-idx-anchor" id="5" href="#gen_assoc/3"><tt>gen_assoc/3</tt></a>, <a class="lpdoc-idx-anchor" id="6" href="#get_assoc/3"><tt>get_assoc/3</tt></a>, <a class="lpdoc-idx-anchor" id="7" href="#get_assoc/5"><tt>get_assoc/5</tt></a>, <a class="lpdoc-idx-anchor" id="8" href="#get_next_assoc/4"><tt>get_next_assoc/4</tt></a>, <a class="lpdoc-idx-anchor" id="9" href="#get_prev_assoc/4"><tt>get_prev_assoc/4</tt></a>, <a class="lpdoc-idx-anchor" id="10" href="#list_to_assoc/2"><tt>list_to_assoc/2</tt></a>, <a class="lpdoc-idx-anchor" id="11" href="#ord_list_to_assoc/2"><tt>ord_list_to_assoc/2</tt></a>, <a class="lpdoc-idx-anchor" id="12" href="#map_assoc/2"><tt>map_assoc/2</tt></a>, <a class="lpdoc-idx-anchor" id="13" href="#map_assoc/3"><tt>map_assoc/3</tt></a>, <a class="lpdoc-idx-anchor" id="14" href="#map/3"><tt>map/3</tt></a>, <a class="lpdoc-idx-anchor" id="15" href="hiordlib.html#foldr/4"><tt>foldr/4</tt></a>, <a class="lpdoc-idx-anchor" id="16" href="#put_assoc/4"><tt>put_assoc/4</tt></a>, <a class="lpdoc-idx-anchor" id="17" href="#put_assoc/5"><tt>put_assoc/5</tt></a>, <a class="lpdoc-idx-anchor" id="18" href="#add_assoc/4"><tt>add_assoc/4</tt></a>, <a class="lpdoc-idx-anchor" id="19" href="#update_assoc/5"><tt>update_assoc/5</tt></a>, <a class="lpdoc-idx-anchor" id="20" href="#del_assoc/4"><tt>del_assoc/4</tt></a>, <a class="lpdoc-idx-anchor" id="21" href="#del_min_assoc/4"><tt>del_min_assoc/4</tt></a>, <a class="lpdoc-idx-anchor" id="22" href="#del_max_assoc/4"><tt>del_max_assoc/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="empty_assoc/1" href="ciaosearch.html#empty_assoc/1">empty_assoc/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage 1:</span><span class="lpdoc-usage-decl"><tt>empty_assoc(Assoc)</tt> </span><p>True if <span class="lpdoc-var">Assoc</span> is an empty <tt>assoc_table</tt>.</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="23" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="24" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span> </ul><p><span class="lpdoc-usage-header">Usage 2:</span><span class="lpdoc-usage-decl"><tt>empty_assoc(Assoc)</tt> </span><p><span class="lpdoc-var">Assoc</span> is an empty <tt>assoc_table</tt>.</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="25" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="26" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="assoc_to_list/2" href="ciaosearch.html#assoc_to_list/2">assoc_to_list/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>assoc_to_list(Assoc,L)</tt> </span><p>Transforms <span class="lpdoc-var">Assoc</span> into <span class="lpdoc-var">L</span> where each pair of <span class="lpdoc-var">L</span> was a association in <span class="lpdoc-var">Assoc</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="27" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="28" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">L</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="29" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="30" href="ciaosearch.html#ord_pairs/1"><tt>assoc:ord_pairs/1</tt></a>)</span><span><span class="lpdoc-var">L</span> is a ordered list of elements of the form <tt>key</tt>-<tt>value</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="is_assoc/1" href="ciaosearch.html#is_assoc/1">is_assoc/1</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>is_assoc(Assoc)</tt> </span><p>True if <span class="lpdoc-var">Assoc</span> is an <tt>assoc_table</tt>.</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="31" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="32" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="min_assoc/3" href="ciaosearch.html#min_assoc/3">min_assoc/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>min_assoc(Assoc,Key,Value)</tt> </span><p><span class="lpdoc-var">Key</span> and <span class="lpdoc-var">Value</span> are <tt>key</tt> and <tt>value</tt> of the element with the smallest <tt>key</tt> in <span class="lpdoc-var">Assoc</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="33" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="34" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Key</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="35" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Value</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="36" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="37" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">Key</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="38" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">Value</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="max_assoc/3" href="ciaosearch.html#max_assoc/3">max_assoc/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>max_assoc(Assoc,Key,Value)</tt> </span><p><span class="lpdoc-var">Key</span> and <span class="lpdoc-var">Value</span> are the <tt>key</tt> and <tt>value</tt> of the element with the largest <tt>key</tt> in <span class="lpdoc-var">Assoc</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="39" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="40" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Key</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="41" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Value</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="42" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="43" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">Key</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="44" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">Value</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="gen_assoc/3" href="ciaosearch.html#gen_assoc/3">gen_assoc/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage 1:</span><span class="lpdoc-usage-decl"><tt>gen_assoc(K,Assoc,V)</tt> </span><p>Enumerate matching elements of Assoc in ascending order of their keys via backtracking.</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="45" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="46" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="47" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="48" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="49" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="50" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul><p><span class="lpdoc-usage-header">Usage 2:</span><span class="lpdoc-usage-decl"><tt>gen_assoc(K,Assoc,V)</tt> </span><p>Enumerate matching elements of Assoc in ascending order of their keys via backtracking whose value is <span class="lpdoc-var">V</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="51" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="52" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="53" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="54" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="55" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="56" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_assoc/3" href="ciaosearch.html#get_assoc/3">get_assoc/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage 1:</span><span class="lpdoc-usage-decl"><tt>get_assoc(K,Assoc,V)</tt> </span><p>True if <span class="lpdoc-var">V</span> is the value associated to the key <span class="lpdoc-var">K</span> in the assoc_table <span class="lpdoc-var">Assoc</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="57" href="term_typing.html#nonvar/1"><tt>term_typing: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="58" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="59" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="60" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="61" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="62" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul><p><span class="lpdoc-usage-header">Usage 2:</span><span class="lpdoc-usage-decl"><tt>get_assoc(K,Assoc,V)</tt> </span><p><span class="lpdoc-var">V</span> is the value associated to the key <span class="lpdoc-var">K</span> in the assoc_table <span class="lpdoc-var">Assoc</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="63" href="term_typing.html#nonvar/1"><tt>term_typing: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="64" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="65" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="66" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="67" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="68" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_assoc/5" href="ciaosearch.html#get_assoc/5">get_assoc/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_assoc(K,Assoc,Old,NewAssoc,New)</tt> </span><p><span class="lpdoc-var">NewAssoc</span> is an <tt>assoc_table</tt> identical to <span class="lpdoc-var">Assoc</span> except that the value associated with <span class="lpdoc-var">Key</span> is <span class="lpdoc-var">New</span> instead of <span class="lpdoc-var">Old</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="69" href="term_typing.html#nonvar/1"><tt>term_typing: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="70" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="71" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Old</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="72" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">NewAssoc</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="73" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">New</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="74" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="75" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="76" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">Old</span> is a valid value in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="77" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">NewAssoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="78" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">New</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_next_assoc/4" href="ciaosearch.html#get_next_assoc/4">get_next_assoc/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_next_assoc(K,Assoc,NextK,NextV)</tt> </span><p><span class="lpdoc-var">NextK</span> and <span class="lpdoc-var">NextV</span> are the next <tt>key</tt> and associated <tt>value</tt> after <span class="lpdoc-var">K</span> in <span class="lpdoc-var">Assoc</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="79" href="term_typing.html#nonvar/1"><tt>term_typing: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="80" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="81" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">NextK</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="82" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">NextV</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="83" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="84" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="85" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">NextK</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="86" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">NextV</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="get_prev_assoc/4" href="ciaosearch.html#get_prev_assoc/4">get_prev_assoc/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>get_prev_assoc(K,Assoc,PrevK,PrevV)</tt> </span><p><span class="lpdoc-var">PrevK</span> and <span class="lpdoc-var">PrevV</span> are the previous <tt>key</tt> and associated <tt>value</tt> after <span class="lpdoc-var">K</span> in <span class="lpdoc-var">Assoc</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="87" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="88" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="89" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">PrevK</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="90" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">PrevV</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="list_to_assoc/2" href="ciaosearch.html#list_to_assoc/2">list_to_assoc/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>list_to_assoc(L,Assoc)</tt> </span><p>Transforms <span class="lpdoc-var">L</span> into <span class="lpdoc-var">Assoc</span> where each pair of <span class="lpdoc-var">L</span> will be a association in <span class="lpdoc-var">Assoc</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="91" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">L</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="92" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="93" href="ciaosearch.html#pairs/1"><tt>assoc:pairs/1</tt></a>)</span><span><span class="lpdoc-var">L</span> is a list of elements of the form <tt>key</tt>-<tt>value</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="94" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="ord_list_to_assoc/2" href="ciaosearch.html#ord_list_to_assoc/2">ord_list_to_assoc/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>ord_list_to_assoc(L,Assoc)</tt> </span><p>Transforms <span class="lpdoc-var">L</span>, a list of pairs (using the functor <tt>-/2</tt>) sorted by its first element, into the table <span class="lpdoc-var">Assoc</span> where each pair of <span class="lpdoc-var">L</span> will become a association in <span class="lpdoc-var">Assoc</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="95" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">L</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="96" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="97" href="ciaosearch.html#ord_pairs/1"><tt>assoc:ord_pairs/1</tt></a>)</span><span><span class="lpdoc-var">L</span> is a ordered list of elements of the form <tt>key</tt>-<tt>value</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="98" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="map_assoc/2" href="ciaosearch.html#map_assoc/2">map_assoc/2</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>map_assoc(Pred,Assoc)</tt> </span><p><span class="lpdoc-var">Assoc</span> is an association tree, and for each <span class="lpdoc-var">Key</span>, if <span class="lpdoc-var">Key</span> is associated with <span class="lpdoc-var">Value</span> in <span class="lpdoc-var">Assoc</span>, Pred(Value) is true.</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="99" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Pred</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="100" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span> </ul> <em>Meta-predicate</em> with arguments: <tt>map_assoc(pred(1),?)</tt>.<br/></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="map_assoc/3" href="ciaosearch.html#map_assoc/3">map_assoc/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>map_assoc(Pred,Assoc,NewAssoc)</tt> </span><p><span class="lpdoc-var">Assoc</span> and <span class="lpdoc-var">NewAssoc</span> are association trees of the same shape, and for each <span class="lpdoc-var">Key</span>, if <span class="lpdoc-var">Key</span> is associated with <span class="lpdoc-var">Old</span> in <span class="lpdoc-var">Assoc</span> and with <span class="lpdoc-var">new</span> in <span class="lpdoc-var">NewAssoc</span>, Pred(Old,New) is true.</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="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Pred</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="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="103" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">NewAssoc</span> is a free variable. </span> </ul> <em>Meta-predicate</em> with arguments: <tt>map_assoc(pred(2),?,?)</tt>.<br/></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="map/3" href="ciaosearch.html#map/3">map/3</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>map(Pred,Assoc1,Assoc2)</tt> </span><p>Applies <span class="lpdoc-var">Pred</span> with arity 3 to each value of the assoc_table <span class="lpdoc-var">Assoc1</span> obtaining the new assoc_table <span class="lpdoc-var">Assoc2</span> in which only the values can have changed.</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="104" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Pred</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="105" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</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="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a free variable. </span> </ul> <em>Meta-predicate</em> with arguments: <tt>map(pred(3),?,?)</tt>.<br/></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="foldr/4" href="ciaosearch.html#foldr/4">foldr/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>foldr(Pred,Assoc,DS,NDS)</tt> </span><p>Applies <span class="lpdoc-var">Pred</span> with arity 4 to each value of the assoc_table <span class="lpdoc-var">Assoc</span>. If <span class="lpdoc-var">Pred</span> is satisfied, it updates the data-structure DS. Otherwise it fails.</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="107" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Pred</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="108" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="109" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">DS</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="110" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">NDS</span> is a free variable. </span> </ul> <em>Meta-predicate</em> with arguments: <tt>foldr(pred(4),?,?,?)</tt>.<br/></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="put_assoc/4" href="ciaosearch.html#put_assoc/4">put_assoc/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>put_assoc(K,Assoc,V,NewAssoc)</tt> </span><p>The value <span class="lpdoc-var">V</span> is inserted in <span class="lpdoc-var">Assoc</span> associated to the key <span class="lpdoc-var">K</span> and the result is <span class="lpdoc-var">NewAssoc</span>. This can be used to insert and change associations.</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="111" href="term_typing.html#nonvar/1"><tt>term_typing: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="112" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</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="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">V</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="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">NewAssoc</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="115" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="116" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="117" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="118" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">NewAssoc</span> is a associations beetwen keys and values. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="put_assoc/5" href="ciaosearch.html#put_assoc/5">put_assoc/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>put_assoc(K,Assoc1,V,Assoc2,Member)</tt> </span><p>The value <span class="lpdoc-var">V</span> is inserted in <span class="lpdoc-var">Assoc1</span> associated to the key <span class="lpdoc-var">K</span> and the result is <span class="lpdoc-var">Assoc2</span>. If the key <span class="lpdoc-var">K</span> doesn&apos;t belong to the <span class="lpdoc-var">Assoc1</span> then <span class="lpdoc-var">Member</span> is unified with no. Otherwise, <span class="lpdoc-var">Assoc2</span> is the result of substituting the association <span class="lpdoc-var">K</span>-<span class="lpdoc-var">OldValue</span> by <span class="lpdoc-var">K</span>-<span class="lpdoc-var">V</span> and <span class="lpdoc-var">Member</span> is unified with yes(OldValue).</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="119" href="term_typing.html#nonvar/1"><tt>term_typing: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="120" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="121" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="122" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="123" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Member</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="124" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="125" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="126" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="127" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="128" href="ciaosearch.html#is_member/1"><tt>assoc:is_member/1</tt></a>)</span><span><span class="lpdoc-var">Member</span> is no or yes(value). </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="add_assoc/4" href="ciaosearch.html#add_assoc/4">add_assoc/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>add_assoc(K,Assoc1,V,Assoc2)</tt> </span><p>This is similar to <a class="lpdoc-idx-anchor" id="129" href="ciaosearch.html#put_value/5"><tt>put_value/5</tt></a> but <span class="lpdoc-var">Key</span> must not appear in <span class="lpdoc-var">Assoc1</span> (<span class="lpdoc-var">Member</span> in put_value/5 is known to be no). An error is thrown otherwise.</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="130" href="term_typing.html#nonvar/1"><tt>term_typing: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="131" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="132" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="133" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="134" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="135" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="136" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="137" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a associations beetwen keys and values. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="update_assoc/5" href="ciaosearch.html#update_assoc/5">update_assoc/5</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>update_assoc(K,Assoc1,V,Assoc2,OldVar)</tt> </span><p>This is similar to <a class="lpdoc-idx-anchor" id="138" href="#put_assoc/5"><tt>put_assoc/5</tt></a> but <span class="lpdoc-var">Key</span> must not appear in <span class="lpdoc-var">Assoc1</span> (<span class="lpdoc-var">Member</span> in put_value/5 is known to be no). An error is thrown otherwise.</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="139" href="term_typing.html#nonvar/1"><tt>term_typing: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="140" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="141" href="term_typing.html#nonvar/1"><tt>term_typing:nonvar/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is currently a term which is not a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="142" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="143" href="term_typing.html#var/1"><tt>term_typing:var/1</tt></a>)</span><span><span class="lpdoc-var">OldVar</span> is a free variable. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="144" href="ciaosearch.html#key/1"><tt>assoc:key/1</tt></a>)</span><span><span class="lpdoc-var">K</span> is a valid key in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="145" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc1</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="146" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">V</span> is a valid value in a <tt>assoc_table</tt>. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="147" href="ciaosearch.html#assoc_table/1"><tt>assoc:assoc_table/1</tt></a>)</span><span><span class="lpdoc-var">Assoc2</span> is a associations beetwen keys and values. </span><br/><span class="lpdoc-on-right"> (<a class="lpdoc-idx-anchor" id="148" href="ciaosearch.html#value/1"><tt>assoc:value/1</tt></a>)</span><span><span class="lpdoc-var">OldVar</span> is a valid value in a <tt>assoc_table</tt>. </span> </ul></div></div><p> <div><div class="lpdoc-defname"><span class="lpdoc-predtag">PREDICATE</span><a class="lpdoc-idx-anchor" id="del_assoc/4" href="ciaosearch.html#del_assoc/4">del_assoc/4</a></div><div class="lpdoc-deftext"><p><span class="lpdoc-usage-header">Usage:</span><span class="lpdoc-usage-decl"><tt>del_assoc(K,Assoc1,V,Assoc2)</tt> </span><p>Delete in <span class="lpdoc-var">Assoc1</span> the key <span class="lpdoc-var">K</span> to give <span class="lpdoc-var">Assoc2</span>. If the key <span class="lpdoc-var">K</span> does not belong to the <span class="lpdoc-var">Assoc1</span> then <span class="lpdoc-var">Member</span> is unified with no and <span class="lpdoc-var">Assoc1</span> and <span class="lpdoc-var">Assoc2</span> are unified. Oth