Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 2fc07611b08d4a735fd34d5eb60d8e16 > files > 2224

ciao-1.10p8-3mdv2010.0.i586.rpm

<HTML>
<HEAD>
<!-- Created by texi2html 1.56k + clip patches and <A href="http://www.clip.dia.fi.upm.es/Software">lpdoc</A> from ciao.texi on 28 January 2007 -->

<LINK rel="stylesheet" href="ciao.css" type="text/css">
<TITLE>The Ciao Prolog System               - List processing</TITLE>
</HEAD>
<BODY> 
Go to the <A HREF="ciao_1.html">first</A>, <A HREF="ciao_47.html">previous</A>, <A HREF="ciao_49.html">next</A>, <A HREF="ciao_241.html">last</A> section, <A HREF="ciao_toc.html">table of contents</A>.
<P><HR><P>


<H1><A NAME="SEC231" HREF="ciao_toc.html#TOC231">List processing</A></H1>
<P>
<A NAME="IDX3085"></A>


<P>
<STRONG>Author(s):</STRONG> The CLIP Group.


<P>
<STRONG>Version:</STRONG> 1.10#7 (2006/4/26, 19:22:13 CEST)


<P>
<STRONG>Version of last change:</STRONG> 1.9#318 (2004/2/26, 15:46:54 CET)


<P>
This module provides a set of predicates for list processing.



<UL>
<LI><A HREF="ciao_48.html#SEC232">Usage and interface (lists)</A>
<LI><A HREF="ciao_48.html#SEC233">Documentation on exports (lists)</A>
</UL>



<H2><A NAME="SEC232" HREF="ciao_toc.html#TOC232">Usage and interface (<CODE>lists</CODE>)</A></H2>

<div class="cartouche">

<UL>

<LI><STRONG>Library usage:</STRONG>

<CODE>:- use_module(library(lists)).</CODE>

<LI><STRONG>Exports:</STRONG>


<UL>

<LI><EM>Predicates:</EM>

<A NAME="IDX3086"></A>
<CODE>nonsingle/1</CODE>, 
<A NAME="IDX3087"></A>
<CODE>append/3</CODE>, 
<A NAME="IDX3088"></A>
<CODE>reverse/2</CODE>, 
<A NAME="IDX3089"></A>
<CODE>reverse/3</CODE>, 
<A NAME="IDX3090"></A>
<CODE>delete/3</CODE>, 
<A NAME="IDX3091"></A>
<CODE>delete_non_ground/3</CODE>, 
<A NAME="IDX3092"></A>
<CODE>select/3</CODE>, 
<A NAME="IDX3093"></A>
<CODE>length/2</CODE>, 
<A NAME="IDX3094"></A>
<CODE>nth/3</CODE>, 
<A NAME="IDX3095"></A>
<CODE>add_after/4</CODE>, 
<A NAME="IDX3096"></A>
<CODE>add_before/4</CODE>, 
<A NAME="IDX3097"></A>
<CODE>dlist/3</CODE>, 
<A NAME="IDX3098"></A>
<CODE>list_concat/2</CODE>, 
<A NAME="IDX3099"></A>
<CODE>list_insert/2</CODE>, 
<A NAME="IDX3100"></A>
<CODE>insert_last/3</CODE>, 
<A NAME="IDX3101"></A>
<CODE>contains_ro/2</CODE>, 
<A NAME="IDX3102"></A>
<CODE>contains1/2</CODE>, 
<A NAME="IDX3103"></A>
<CODE>nocontainsx/2</CODE>, 
<A NAME="IDX3104"></A>
<CODE>last/2</CODE>, 
<A NAME="IDX3105"></A>
<CODE>list_lookup/3</CODE>, 
<A NAME="IDX3106"></A>
<CODE>list_lookup/4</CODE>, 
<A NAME="IDX3107"></A>
<CODE>intset_insert/3</CODE>, 
<A NAME="IDX3108"></A>
<CODE>intset_delete/3</CODE>, 
<A NAME="IDX3109"></A>
<CODE>intset_in/2</CODE>, 
<A NAME="IDX3110"></A>
<CODE>intset_sequence/3</CODE>, 
<A NAME="IDX3111"></A>
<CODE>intersection/3</CODE>, 
<A NAME="IDX3112"></A>
<CODE>union/3</CODE>, 
<A NAME="IDX3113"></A>
<CODE>difference/3</CODE>, 
<A NAME="IDX3114"></A>
<CODE>equal_lists/2</CODE>, 
<A NAME="IDX3115"></A>
<CODE>list_to_list_of_lists/2</CODE>, 
<A NAME="IDX3116"></A>
<CODE>powerset/2</CODE>, 
<A NAME="IDX3117"></A>
<CODE>cross_product/2</CODE>.

<LI><EM>Properties:</EM>

<A NAME="IDX3118"></A>
<CODE>list1/2</CODE>, 
<A NAME="IDX3119"></A>
<CODE>sublist/2</CODE>, 
<A NAME="IDX3120"></A>
<CODE>subordlist/2</CODE>.

</UL>

</UL>

</div class="cartouche">



<H2><A NAME="SEC233" HREF="ciao_toc.html#TOC233">Documentation on exports (<CODE>lists</CODE>)</A></H2>
<P>
<A NAME="IDX3121"></A>
<A NAME="IDX3122"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>nonsingle/1:</B>
<DD><A NAME="IDX3123"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>nonsingle(X)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>X</CODE> is not a singleton.

</UL>

</DL>

<P>
<A NAME="IDX3124"></A>
<A NAME="IDX3125"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>append/3:</B>
<DD><A NAME="IDX3126"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>append(Xs, Ys, Zs)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>Zs</CODE> is <CODE>Ys</CODE> appended to <CODE>Xs</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3127"></A>
<A NAME="IDX3128"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>reverse/2:</B>
<DD><A NAME="IDX3129"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>reverse(Xs, Ys)</CODE>

<UL>
<LI><EM>Description:</EM> Reverses the order of elements in <CODE>Xs</CODE>.

<LI><EM>The following properties should hold at call time:</EM>

<CODE>Xs</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>Ys</CODE> is any term.
 (<CODE>basic_props:term/1</CODE>)
<LI><EM>The following properties should hold upon exit:</EM>

<CODE>Xs</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>Ys</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)
</UL>

</DL>

<P>
<A NAME="IDX3130"></A>
<A NAME="IDX3131"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>reverse/3:</B>
<DD><A NAME="IDX3132"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>reverse(A, B, C)</CODE>

<UL>
<LI><EM>Description:</EM> Reverse the order of elements in <CODE>A</CODE>, and append it with <CODE>B</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3133"></A>
<A NAME="IDX3134"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>delete/3:</B>
<DD><A NAME="IDX3135"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>delete(L1, E, L2)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>L2</CODE> is <CODE>L1</CODE> without the ocurrences of <CODE>E</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3136"></A>
<A NAME="IDX3137"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>delete_non_ground/3:</B>
<DD><A NAME="IDX3138"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>delete_non_ground(L1, E, L2)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>L2</CODE> is <CODE>L1</CODE> without the ocurrences of <CODE>E</CODE>. <CODE>E</CODE> can be a nonground term so that all the elements in <CODE>L1</CODE> it unifies with will be deleted

</UL>

</DL>

<P>
<A NAME="IDX3139"></A>
<A NAME="IDX3140"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>select/3:</B>
<DD><A NAME="IDX3141"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>select(X, Xs, Ys)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>Xs</CODE> and <CODE>Ys</CODE> have the same elements except for one occurrence of <CODE>X</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3142"></A>
<A NAME="IDX3143"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>length/2:</B>
<DD><A NAME="IDX3144"></A>


<P>
<STRONG>General properties:</STRONG> <CODE>length(A, B)</CODE>

<UL>
<LI><EM>The following properties hold globally:</EM>

This predicate is understood natively by CiaoPP.
 (<CODE>basic_props:native/1</CODE>)
</UL>

<P>
<STRONG>Usage 1:</STRONG> <CODE>length(L, N)</CODE>

<UL>
<LI><EM>Description:</EM> Computes the length of <CODE>L</CODE>.

<LI><EM>The following properties should hold at call time:</EM>

<CODE>L</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>N</CODE> is a free variable.
 (<CODE>term_typing:var/1</CODE>)
<LI><EM>The following properties hold upon exit:</EM>

<CODE>L</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>N</CODE> is an integer.
 (<CODE>basic_props:int/1</CODE>)
</UL>

<P>
<STRONG>Usage 2:</STRONG> <CODE>length(L, N)</CODE>

<UL>
<LI><EM>Description:</EM> Outputs <CODE>L</CODE> of length <CODE>N</CODE>.

<LI><EM>The following properties should hold at call time:</EM>

<CODE>L</CODE> is a free variable.
 (<CODE>term_typing:var/1</CODE>)

<CODE>N</CODE> is an integer.
 (<CODE>basic_props:int/1</CODE>)
<LI><EM>The following properties hold upon exit:</EM>

<CODE>L</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>N</CODE> is an integer.
 (<CODE>basic_props:int/1</CODE>)
</UL>

<P>
<STRONG>Usage 3:</STRONG> <CODE>length(L, N)</CODE>

<UL>
<LI><EM>Description:</EM> Checks that <CODE>L</CODE> is of length <CODE>N</CODE>.

<LI><EM>The following properties should hold at call time:</EM>

<CODE>L</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>N</CODE> is an integer.
 (<CODE>basic_props:int/1</CODE>)
<LI><EM>The following properties hold upon exit:</EM>

<CODE>L</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)

<CODE>N</CODE> is an integer.
 (<CODE>basic_props:int/1</CODE>)
</UL>

</DL>

<P>
<A NAME="IDX3145"></A>
<A NAME="IDX3146"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>nth/3:</B>
<DD><A NAME="IDX3147"></A>


<P>
<CODE>nth(N, List, Elem)</CODE>


<P>
<CODE>N</CODE> is the position in <CODE>List</CODE> of <CODE>Elem</CODE>. <CODE>N</CODE> counts from one.


<P>
<STRONG>Usage 1:</STRONG> <CODE>nth(+int, ?list, ?term)</CODE>

<UL>
<LI><EM>Description:</EM> Unifies <CODE>Elem</CODE> and the <CODE>N</CODE>th element of <CODE>List</CODE>.

</UL>

<P>
<STRONG>Usage 2:</STRONG> <CODE>nth(-int, ?list, ?term)</CODE>

<UL>
<LI><EM>Description:</EM> Finds the positions where <CODE>Elem</CODE> is in <CODE>List</CODE>. Positions are found in ascending order.

</UL>

</DL>

<P>
<A NAME="IDX3148"></A>
<A NAME="IDX3149"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>add_after/4:</B>
<DD><A NAME="IDX3150"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>add_after(+L0, +E0, +E, -L)</CODE>

<UL>
<LI><EM>Description:</EM> Adds element <CODE>E</CODE> after element <CODE>E0</CODE> (or at end) to list <CODE>L0</CODE> returning in <CODE>L</CODE> the new list (uses term comparison).

</UL>

</DL>

<P>
<A NAME="IDX3151"></A>
<A NAME="IDX3152"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>add_before/4:</B>
<DD><A NAME="IDX3153"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>add_before(+L0, +E0, +E, -L)</CODE>

<UL>
<LI><EM>Description:</EM> Adds element E before element E0 (or at start) to list L0 returning in L the new list (uses term comparison).

</UL>

</DL>

<P>
<A NAME="IDX3154"></A>
<A NAME="IDX3155"></A>
<DL>
<DT><span class="define">PROPERTY:</span> <B>list1/2:</B>
<DD><A NAME="IDX3156"></A>


<P>
<EM>Meta-predicate</EM> with arguments: <CODE>list1(?,pred(1))</CODE>.


<P>
<STRONG>Usage:</STRONG> <CODE>list1(X, Y)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>X</CODE> is a list of <CODE>Y</CODE>s of at least one element.

</UL>

</DL>

<P>
<A NAME="IDX3157"></A>
<A NAME="IDX3158"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>dlist/3:</B>
<DD><A NAME="IDX3159"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>dlist(List, DList, Tail)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List</CODE> is the result of removing <CODE>Tail</CODE> from the end of <CODE>DList</CODE> (makes a difference list from a list).

</UL>

</DL>

<P>
<A NAME="IDX3160"></A>
<A NAME="IDX3161"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>list_concat/2:</B>
<DD><A NAME="IDX3162"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>list_concat(LL, L)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>L</CODE> is the concatenation of all the lists in <CODE>LL</CODE>.

<LI><EM>Call and exit should be <EM>compatible</EM> with:</EM>

<CODE>LL</CODE> is a list of <CODE>list</CODE>s.
 (<CODE>basic_props:list/2</CODE>)

<CODE>L</CODE> is a list.
 (<CODE>basic_props:list/1</CODE>)
</UL>

</DL>

<P>
<A NAME="IDX3163"></A>
<A NAME="IDX3164"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>list_insert/2:</B>
<DD><A NAME="IDX3165"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>list_insert(-List, +Term)</CODE>

<UL>
<LI><EM>Description:</EM> Adds <CODE>Term</CODE> to the end of <CODE>List</CODE> if there is no element in <CODE>List</CODE> identical to <CODE>Term</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3166"></A>
<A NAME="IDX3167"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>insert_last/3:</B>
<DD><A NAME="IDX3168"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>insert_last(+L0, +E, -L)</CODE>

<UL>
<LI><EM>Description:</EM> Adds element <CODE>E</CODE> at end of list <CODE>L0</CODE> returning <CODE>L</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3169"></A>
<A NAME="IDX3170"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>contains_ro/2:</B>
<DD><A NAME="IDX3171"></A>


<P>
<STRONG>Usage:</STRONG> 

<UL>
<LI><EM>Description:</EM> Impure membership (does not instantiate a variable in its first argument.

</UL>

</DL>

<P>
<A NAME="IDX3172"></A>
<A NAME="IDX3173"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>contains1/2:</B>
<DD><A NAME="IDX3174"></A>


<P>
<STRONG>Usage:</STRONG> 

<UL>
<LI><EM>Description:</EM> First membership.

</UL>

</DL>

<P>
<A NAME="IDX3175"></A>
<A NAME="IDX3176"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>nocontainsx/2:</B>
<DD><A NAME="IDX3177"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>nocontainsx(L, X)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>X</CODE> is not identical to any element of <CODE>L</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3178"></A>
<A NAME="IDX3179"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>last/2:</B>
<DD><A NAME="IDX3180"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>last(L, X)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>X</CODE> is the last element of list <CODE>L</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3181"></A>
<A NAME="IDX3182"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>list_lookup/3:</B>
<DD><A NAME="IDX3183"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>list_lookup(List, Key, Value)</CODE>

<UL>
<LI><EM>Description:</EM> Same as

<A NAME="IDX3184"></A>
<CODE>list_lookup/4</CODE>, but use 
<A NAME="IDX3185"></A>
<CODE>-/2</CODE> as functor. 
</UL>

</DL>

<P>
<A NAME="IDX3186"></A>
<A NAME="IDX3187"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>list_lookup/4:</B>
<DD><A NAME="IDX3188"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>list_lookup(List, Functor, Key, Value)</CODE>

<UL>
<LI><EM>Description:</EM> Look up <CODE>Functor</CODE>(<CODE>Key</CODE>,<CODE>Value</CODE>) pair in variable ended key-value pair list <CODE>L</CODE> or else add it at the end.

</UL>

</DL>

<P>
<A NAME="IDX3189"></A>
<A NAME="IDX3190"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>intset_insert/3:</B>
<DD><A NAME="IDX3191"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>intset_insert(A, B, Set)</CODE>

<UL>
<LI><EM>Description:</EM> Insert the element <CODE>B</CODE> in the ordered set of numbers <CODE>A</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3192"></A>
<A NAME="IDX3193"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>intset_delete/3:</B>
<DD><A NAME="IDX3194"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>intset_delete(A, B, Set)</CODE>

<UL>
<LI><EM>Description:</EM> Delete from the ordered set <CODE>A</CODE> the element <CODE>B</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3195"></A>
<A NAME="IDX3196"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>intset_in/2:</B>
<DD><A NAME="IDX3197"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>intset_in(E, Set)</CODE>

<UL>
<LI><EM>Description:</EM> Succeds iff <CODE>E</CODE> is element of <CODE>Set</CODE>

</UL>

</DL>

<P>
<A NAME="IDX3198"></A>
<A NAME="IDX3199"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>intset_sequence/3:</B>
<DD><A NAME="IDX3200"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>intset_sequence(N, L1, L2)</CODE>

<UL>
<LI><EM>Description:</EM> Generates an ordered set of numbers from 0 to <CODE>N</CODE>-1, and append it to <CODE>L1</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3201"></A>
<A NAME="IDX3202"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>intersection/3:</B>
<DD><A NAME="IDX3203"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>intersection(+List1, +List2, -List)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List</CODE> has the elements which are both in <CODE>List1</CODE> and <CODE>List2</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3204"></A>
<A NAME="IDX3205"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>union/3:</B>
<DD><A NAME="IDX3206"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>union(+List1, +List2, -List)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List</CODE> has the elements which are in <CODE>List1</CODE> followed by the elements which are in <CODE>List2</CODE> but not in <CODE>List1</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3207"></A>
<A NAME="IDX3208"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>difference/3:</B>
<DD><A NAME="IDX3209"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>difference(+List1, +List2, -List)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List</CODE> has the elements which are in <CODE>List1</CODE> but not in <CODE>List2</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3210"></A>
<A NAME="IDX3211"></A>
<DL>
<DT><span class="define">PROPERTY:</span> <B>sublist/2:</B>
<DD><A NAME="IDX3212"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>sublist(List1, List2)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List2</CODE> contains all the elements of <CODE>List1</CODE>.

<LI><EM>If the following properties should hold at call time:</EM>

<CODE>List2</CODE> is currently a term which is not a free variable.
 (<CODE>term_typing:nonvar/1</CODE>)
</UL>

</DL>

<P>
<A NAME="IDX3213"></A>
<A NAME="IDX3214"></A>
<DL>
<DT><span class="define">PROPERTY:</span> <B>subordlist/2:</B>
<DD><A NAME="IDX3215"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>subordlist(List1, List2)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List2</CODE> contains all the elements of <CODE>List1</CODE> in the same order.

<LI><EM>If the following properties should hold at call time:</EM>

<CODE>List2</CODE> is currently a term which is not a free variable.
 (<CODE>term_typing:nonvar/1</CODE>)
</UL>

</DL>

<P>
<A NAME="IDX3216"></A>
<A NAME="IDX3217"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>equal_lists/2:</B>
<DD><A NAME="IDX3218"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>equal_lists(+List1, +List2)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List1</CODE> has all the elements of <CODE>List2</CODE>, and vice versa.

</UL>

</DL>

<P>
<A NAME="IDX3219"></A>
<A NAME="IDX3220"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>list_to_list_of_lists/2:</B>
<DD><A NAME="IDX3221"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>list_to_list_of_lists(+List, -LList)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>LList</CODE> is the list of one element lists with elements of <CODE>List</CODE>.

</UL>

</DL>

<P>
<A NAME="IDX3222"></A>
<A NAME="IDX3223"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>powerset/2:</B>
<DD><A NAME="IDX3224"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>powerset(+List, -LList)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>LList</CODE> is the powerset of <CODE>List</CODE>, i.e., the list of all lists which have elements of <CODE>List</CODE>. If <CODE>List</CODE> is ordered, <CODE>LList</CODE> and all its elements are ordered.

</UL>

</DL>

<P>
<A NAME="IDX3225"></A>
<A NAME="IDX3226"></A>
<DL>
<DT><span class="define">PREDICATE:</span> <B>cross_product/2:</B>
<DD><A NAME="IDX3227"></A>


<P>
<STRONG>Usage:</STRONG> <CODE>cross_product(+LList, -List)</CODE>

<UL>
<LI><EM>Description:</EM> <CODE>List</CODE> is the cartesian product of the lists in <CODE>LList</CODE>, that is, the list of lists formed with one element of each list in <CODE>LList</CODE>, in the same order.

</UL>

</DL>

<P><HR><P>
Go to the <A HREF="ciao_1.html">first</A>, <A HREF="ciao_47.html">previous</A>, <A HREF="ciao_49.html">next</A>, <A HREF="ciao_241.html">last</A> section, <A HREF="ciao_toc.html">table of contents</A>.
</BODY>
</HTML>