Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 5ee7712a65135f0dd95d1c92938a0193 > files > 53

ocaml-facile-doc-1.1-2mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link rel="previous" href="Fcl_stak.html">
<link rel="next" href="Fcl_setDomain.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Index of module types" rel=Appendix href="index_module_types.html">
<link title="Fcl_genesis" rel="Chapter" href="Fcl_genesis.html">
<link title="Fcl_debug" rel="Chapter" href="Fcl_debug.html">
<link title="Fcl_misc" rel="Chapter" href="Fcl_misc.html">
<link title="Fcl_float" rel="Chapter" href="Fcl_float.html">
<link title="Fcl_stak" rel="Chapter" href="Fcl_stak.html">
<link title="Fcl_domain" rel="Chapter" href="Fcl_domain.html">
<link title="Fcl_setDomain" rel="Chapter" href="Fcl_setDomain.html">
<link title="Fcl_data" rel="Chapter" href="Fcl_data.html">
<link title="Fcl_cstr" rel="Chapter" href="Fcl_cstr.html">
<link title="Fcl_var" rel="Chapter" href="Fcl_var.html">
<link title="Fcl_reify" rel="Chapter" href="Fcl_reify.html">
<link title="Fcl_invariant" rel="Chapter" href="Fcl_invariant.html">
<link title="Fcl_boolean" rel="Chapter" href="Fcl_boolean.html">
<link title="Fcl_alldiff" rel="Chapter" href="Fcl_alldiff.html">
<link title="Fcl_linear" rel="Chapter" href="Fcl_linear.html">
<link title="Fcl_nonlinear" rel="Chapter" href="Fcl_nonlinear.html">
<link title="Fcl_expr" rel="Chapter" href="Fcl_expr.html">
<link title="Fcl_arith" rel="Chapter" href="Fcl_arith.html">
<link title="Fcl_interval" rel="Chapter" href="Fcl_interval.html">
<link title="Fcl_gcc" rel="Chapter" href="Fcl_gcc.html">
<link title="Fcl_fdArray" rel="Chapter" href="Fcl_fdArray.html">
<link title="Fcl_conjunto" rel="Chapter" href="Fcl_conjunto.html">
<link title="Fcl_sorting" rel="Chapter" href="Fcl_sorting.html">
<link title="Fcl_goals" rel="Chapter" href="Fcl_goals.html">
<link title="Fcl_opti" rel="Chapter" href="Fcl_opti.html">
<link title="Facile" rel="Chapter" href="Facile.html"><title>Fcl_domain</title>
</head>
<body>
<div class="navbar"><a href="Fcl_stak.html">Previous</a>
&nbsp;<a href="index.html">Up</a>
&nbsp;<a href="Fcl_setDomain.html">Next</a>
</div>
<center><h1>Module <a href="type_Fcl_domain.html">Fcl_domain</a></h1></center>
<br>
<pre><span class="keyword">module</span> Fcl_domain: <code class="code">sig</code> <a href="Fcl_domain.html">..</a> <code class="code">end</code></pre>Domain Operations<br>
<hr width="100%">
<br>
This module provides functions to create
   and handle domains, which are useful to build variables and perform
   propagation (i.e. domain filtering).<br>
<pre><span class="keyword">type</span> <a name="TYPEelt"></a><code class="type"></code>elt = <code class="type">int</code> </pre>
<div class="info">
Type of element of domains (for generic interface,
   ).<br>
</div>

<pre><span class="keyword">type</span> <a name="TYPEt"></a><code class="type"></code>t </pre>
<div class="info">
Type of finite domains of integers (functional: no in-place
   modifications, domains can be shared). Standard equality and
   comparison can be used on domains.<br>
</div>

<br>
<br>
<pre><span class="keyword">val</span> <a name="VALempty"></a>empty : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
The empty domain.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALcreate"></a>create : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> list -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">create l</code> builds a new domain containing the values of <code class="code">l</code>. Removes
   duplicates and sorts values. Returns <code class="code">empty</code> if <code class="code">l</code> is
   empty.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALunsafe_create"></a>unsafe_create : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> list -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">unsafe_create l</code> builds a new domain containing the values of <code class="code">l</code>. <code class="code">l</code> must
be sorted and must not contain duplicate values, otherwise the behaviour is
unspecified. Returns <code class="code">empty</code> if <code class="code">l</code> is empty. It is a more efficient variant
of <code class="code">create</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALinterval"></a>interval : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">interval inf sup</code> returns the domain of all integers in the closed
     interval <code class="code">[inf..sup]</code>. Raise <code class="code">Invalid_argument</code> if <code class="code">inf &gt; sup</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALint"></a>int : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
The largest representable domain. Handy to create variables for which
     bounds cannot be previously known. It is actually much smaller
     than <code class="code">interval min_int max_int</code> (which really is the biggest one) to
     try to prevent overflows while computing bounds of expressions
     involving such variables.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALboolean"></a>boolean : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
The domain containing <code class="code">0</code> and <code class="code">1</code>.<br>
</div>
<br>
<br>
<pre><span class="keyword">val</span> <a name="VALis_empty"></a>is_empty : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">is_empty d</code> tests whether the domain <code class="code">d</code> is empty or not.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsize"></a>size : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">size d</code> returns the number of integers in <code class="code">d</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmin"></a>min : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><pre><span class="keyword">val</span> <a name="VALmax"></a>max : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">min d</code> (resp. <code class="code">max d</code>) returns the lower (resp. upper) bound of <code class="code">d</code>.
   If <code class="code">d</code> is empty, the behaviour is unspecified (incorrect return value
   or exception raised).<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmin_max"></a>min_max : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> * <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">min_max d</code> returns both the lower and upper bound of <code class="code">d</code>. If <code class="code">d</code> is empty,
   the behaviour is unspecified (incorrect return value or exception
   raised).<br>
</div>
<pre><span class="keyword">val</span> <a name="VALiter"></a>iter : <code class="type">(<a href="Fcl_domain.html#TYPEelt">elt</a> -> unit) -> <a href="Fcl_domain.html#TYPEt">t</a> -> unit</code></pre><div class="info">
<code class="code">iter f d</code> successively applies function <code class="code">f</code> to all element of <code class="code">d</code> in
  increasing order.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALinterval_iter"></a>interval_iter : <code class="type">(<a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> unit) -> <a href="Fcl_domain.html#TYPEt">t</a> -> unit</code></pre><div class="info">
<code class="code">interval_iter f d</code> successively applies function <code class="code">f</code> to the bounds
     of all the disjoint intervals of <code class="code">d</code> in increasing order. E.g. a
     suitable function <code class="code">f</code> to print a domain can be defined as
     <code class="code">fun mini maxi -&gt; Printf.printf "%d..%d " mini maxi</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALmem"></a>mem : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> bool</code></pre><pre><span class="keyword">val</span> <a name="VALmember"></a>member : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">member n d</code> tests if <code class="code">n</code> belongs to <code class="code">d</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALvalues"></a>values : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> list</code></pre><div class="info">
<code class="code">value d</code> returns the list of values of the domain <code class="code">d</code><br>
</div>
<pre><span class="keyword">val</span> <a name="VALfprint_elt"></a>fprint_elt : <code class="type">Pervasives.out_channel -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> unit</code></pre><pre><span class="keyword">val</span> <a name="VALfprint"></a>fprint : <code class="type">Pervasives.out_channel -> <a href="Fcl_domain.html#TYPEt">t</a> -> unit</code></pre><div class="info">
Pretty printing of elements and domains.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsprint"></a>sprint : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> string</code></pre><div class="info">
<code class="code">sprint d</code> returns a string representation of <code class="code">d</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALincluded"></a>included : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">included d1 d2</code> tests whether domain <code class="code">d1</code> is included in domain <code class="code">d2</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALsmallest_geq"></a>smallest_geq : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><pre><span class="keyword">val</span> <a name="VALgreatest_leq"></a>greatest_leq : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">smallest_geq dom val</code> (resp. <code class="code">greatest_leq dom val</code>) returns the
     smallest (resp. greatest) value in <code class="code">dom</code> greater (resp. smaller) than
     or equal to <code class="code">val</code>. Raises <code class="code">Not_found</code> if <code class="code">max dom &lt; val</code> (resp.
     <code class="code">min dom &gt; val</code>).<br>
</div>
<pre><span class="keyword">val</span> <a name="VALlargest_hole_around"></a>largest_hole_around : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> * <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">largest_hole_around dom val</code> returns the largest hole (interval)
      in <code class="code">dom</code> centred around <code class="code">val</code>. Returns <code class="code">(val, val)</code> if <code class="code">val</code>
      belongs to <code class="code">dom</code> and raises <code class="code">Not_found</code> if <code class="code">val</code> is outside
      <code class="code">dom</code> bounds. Equivalent to
      <code class="code">(greatest_leq dom val, smallest_geq dom val)</code> but faster.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALchoose"></a>choose : <code class="type">(<a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> bool) -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">choose ord d</code> returns the mininum value of <code class="code">d</code> for order <code class="code">ord</code>.
     Raises <code class="code">Not_found</code> if <code class="code">d</code> is empty.<br>
</div>
<br>
<br>
<pre><span class="keyword">val</span> <a name="VALadd"></a>add : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">add n d</code> returns <code class="code">d</code>  <code class="code">{n}</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALremove"></a>remove : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">remove n d</code> returns <code class="code">d</code>  <code class="code">{n}</code>. Returns <code class="code">d</code> if <code class="code">n</code>
    is not in <code class="code">d</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALremove_up"></a>remove_up : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><pre><span class="keyword">val</span> <a name="VALremove_low"></a>remove_low : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">remove_up n d</code> (resp. <code class="code">remove_low n d</code>) returns
      <code class="code">d</code>  <code class="code">[n+1..max_int]</code> (resp.
      <code class="code">d</code>  <code class="code">[min_int..n-1]</code>), i.e. removes values
     stricly greater (resp. less) than <code class="code">n</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALremove_low_up"></a>remove_low_up : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">remove_low_up low up d</code> is a shortcut for
   <code class="code">remove_up up (remove_low low d)</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALremove_closed_inter"></a>remove_closed_inter : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">remove_closed_inter inf sup d</code> returns
      <code class="code">d</code>  <code class="code">[inf..sup]</code>, i.e. removes
     values greater than or equal to <code class="code">inf</code> and less or equal to <code class="code">sup</code> in <code class="code">d</code>.
     Returns <code class="code">d</code> if <code class="code">inf &gt; sup</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALremove_min"></a>remove_min : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><pre><span class="keyword">val</span> <a name="VALremove_max"></a>remove_max : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">remove_min d</code> (resp. <code class="code">remove_max d</code>) returns <code class="code">d</code> without its lower
   (resp. upper) bound. Raises <code class="code">Invalid_argument</code> if <code class="code">d</code> is empty.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALintersection"></a>intersection : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><pre><span class="keyword">val</span> <a name="VALunion"></a>union : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
Intersection (resp. union) on domains.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALdifference"></a>difference : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">difference big small</code> returns <code class="code">big</code>  <code class="code">small</code>.
        <code class="code">small</code> must be included in <code class="code">big</code>, otherwise the behaviour is
        unspecified (incorrect return value or exception raised).<br>
</div>
<pre><span class="keyword">val</span> <a name="VALdiff"></a>diff : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">diff d1 d2</code> returns <code class="code">d1</code>  <code class="code">d2</code>, i.e. domain of
       elements in <code class="code">d1</code> which are not in <code class="code">d2</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALminus"></a>minus : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">minus d</code> returns the domain of opposite values of <code class="code">d</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALplus"></a>plus : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">plus d n</code> translates a domain by <code class="code">n</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALtimes"></a>times : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">times d k</code> expands a domain by factor <code class="code">k</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALcompare"></a>compare : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">compare d1 d2</code> is a comparison function working first on the cardinal,
     then (if <code class="code">d1</code> and <code class="code">d2</code> have the same size) on the lexicographic order
     of the domains (expressed in extension).<br>
</div>
<pre><span class="keyword">val</span> <a name="VALcompare_elt"></a>compare_elt : <code class="type"><a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a> -> <a href="Fcl_domain.html#TYPEelt">elt</a></code></pre><div class="info">
<code class="code">compare_elt e1 e2</code> is a comparison function on elements of domains.
     Convenient to use the <code class="code">Domain</code> module as a functor argument as in
     module <code class="code">Var</code>.<br>
</div>
<pre><span class="keyword">val</span> <a name="VALdisjoint"></a>disjoint : <code class="type"><a href="Fcl_domain.html#TYPEt">t</a> -> <a href="Fcl_domain.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">disjoint d1 d2</code> tests whether <code class="code">d1</code> and <code class="code">d2</code> are disjoint.<br>
</div>
</body></html>