<!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_nonlinear.html"> <link rel="next" href="Fcl_arith.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_expr</title> </head> <body> <div class="navbar"><a href="Fcl_nonlinear.html">Previous</a> <a href="index.html">Up</a> <a href="Fcl_arith.html">Next</a> </div> <center><h1>Module <a href="type_Fcl_expr.html">Fcl_expr</a></h1></center> <br> <pre><span class="keyword">module</span> Fcl_expr: <code class="code">sig</code> <a href="Fcl_expr.html">..</a> <code class="code">end</code></pre>Arithmetic Expressions over Variables of Type <code class="code">Var.Fd.t</code><br> <hr width="100%"> <br> This module provides functions and operators to build arithmetic expressions.<br> <br><code><span class="keyword">type</span> <a name="TYPEagg_op"></a><code class="type"></code>agg_op = </code><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Pluse</span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Multe</span></code></td> </tr></table> <br><code><span class="keyword">type</span> <a name="TYPEbin_op"></a><code class="type"></code>bin_op = </code><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Dive</span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Mode</span></code></td> </tr></table> <br><code><span class="keyword">type</span> <a name="TYPEun_op"></a><code class="type"></code>un_op = </code><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Abse</span></code></td> </tr></table> <br><code><span class="keyword">type</span> <a name="TYPEvar"></a><code class="type"></code>var = </code><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Var</span> <span class="keyword">of</span> <code class="type">Fcl_var.Fd.t</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Aux</span> <span class="keyword">of</span> <code class="type">int</code></code></td> </tr></table> <br><code><span class="keyword">type</span> <a name="TYPEt"></a><code class="type"></code>t = </code><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Agg</span> <span class="keyword">of</span> <code class="type"><a href="Fcl_expr.html#TYPEagg_op">agg_op</a> * (int * <a href="Fcl_expr.html#TYPEt">t</a>) list * int</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Bin</span> <span class="keyword">of</span> <code class="type"><a href="Fcl_expr.html#TYPEbin_op">bin_op</a> * <a href="Fcl_expr.html#TYPEt">t</a> * <a href="Fcl_expr.html#TYPEt">t</a></code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Un</span> <span class="keyword">of</span> <code class="type"><a href="Fcl_expr.html#TYPEun_op">un_op</a> * <a href="Fcl_expr.html#TYPEt">t</a></code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Inte</span> <span class="keyword">of</span> <code class="type">int</code></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span class="constructor">Fde</span> <span class="keyword">of</span> <code class="type"><a href="Fcl_expr.html#TYPEvar">var</a></code></code></td> <td class="typefieldcomment" align="left" valign="top" ><code>(*</code></td><td class="typefieldcomment" align="left" valign="top" >Type of arithmetic expressions over variables of type <code class="code">Var.Fd.t</code> and integers.</td><td class="typefieldcomment" align="left" valign="bottom" ><code>*)</code></td> </tr></table> <pre><span class="keyword">val</span> <a name="VALfprint"></a>fprint : <code class="type">Pervasives.out_channel -> <a href="Fcl_expr.html#TYPEt">t</a> -> unit</code></pre><div class="info"> <code class="code">fprint chan e</code> prints expression <code class="code">e</code> on channel <code class="code">chan</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALeval"></a>eval : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre><div class="info"> <code class="code">eval e</code> returns the integer numerical value of a fully instantiated expression <code class="code">e</code>. Raises <code class="code">Invalid_argument</code> if <code class="code">e</code> is not instantiated.<br> </div> <pre><span class="keyword">val</span> <a name="VALmin_of_expr"></a>min_of_expr : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre><pre><span class="keyword">val</span> <a name="VALmax_of_expr"></a>max_of_expr : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre><div class="info"> <code class="code">min_of_expr e</code> (resp. <code class="code">max_of_expr e</code>) returns the minimal (resp. maximal) possible value of expression <code class="code">e</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALmin_max_of_expr"></a>min_max_of_expr : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> int * int</code></pre><div class="info"> <code class="code">min_max_of_expr e</code> is equivalent to <code class="code">(min_of_expr e, max_of_expr e)</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALcompare_expr"></a>compare_expr : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> <a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre><pre><span class="keyword">val</span> <a name="VALcompare_intexpr"></a>compare_intexpr : <code class="type">int * <a href="Fcl_expr.html#TYPEt">t</a> -> int * <a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre><pre><span class="keyword">val</span> <a name="VALreduce"></a>reduce : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> <a href="Fcl_expr.html#TYPEt">t</a></code></pre><div class="info"> <code class="code">reduce e</code> normalizes expression <code class="code">e</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALconstrain"></a>constrain : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> <a href="Fcl_linear.html#TYPEoperator">Fcl_linear.operator</a> -> <a href="Fcl_cstr.html#TYPEt">Fcl_cstr.t</a></code></pre><div class="info"> <code class="code">constrain e op</code> returns the constraint <code class="code">e op = 0</code> and post intermediate constraints.<br> </div> </body></html>