<!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 class="pre" href="Fcl_nonlinear.html" title="Fcl_nonlinear">Previous</a> <a class="up" href="index.html" title="Index">Up</a> <a class="post" href="Fcl_arith.html" title="Fcl_arith">Next</a> </div> <h1>Module <a href="type_Fcl_expr.html">Fcl_expr</a></h1> <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><div class="info module top"> Arithmetic Expressions over Variables of Type <code class="code">Var.Fd.t</code><br> </div> <hr width="100%"> <br> This module provides functions and operators to build arithmetic expressions.<br> <pre><code><span id="TYPEagg_op"><span class="keyword">type</span> <code class="type"></code>agg_op</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTagg_op.Pluse"><span class="constructor">Pluse</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTagg_op.Multe"><span class="constructor">Multe</span></span></code></td> </tr></table> <pre><code><span id="TYPEbin_op"><span class="keyword">type</span> <code class="type"></code>bin_op</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTbin_op.Dive"><span class="constructor">Dive</span></span></code></td> </tr> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTbin_op.Mode"><span class="constructor">Mode</span></span></code></td> </tr></table> <pre><code><span id="TYPEun_op"><span class="keyword">type</span> <code class="type"></code>un_op</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTun_op.Abse"><span class="constructor">Abse</span></span></code></td> </tr></table> <pre><code><span id="TYPEvar"><span class="keyword">type</span> <code class="type"></code>var</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTvar.Var"><span class="constructor">Var</span></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 id="TYPEELTvar.Aux"><span class="constructor">Aux</span></span> <span class="keyword">of</span> <code class="type">int</code></code></td> </tr></table> <pre><code><span id="TYPEt"><span class="keyword">type</span> <code class="type"></code>t</span> = </code></pre><table class="typetable"> <tr> <td align="left" valign="top" > <code><span class="keyword">|</span></code></td> <td align="left" valign="top" > <code><span id="TYPEELTt.Agg"><span class="constructor">Agg</span></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 id="TYPEELTt.Bin"><span class="constructor">Bin</span></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 id="TYPEELTt.Un"><span class="constructor">Un</span></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 id="TYPEELTt.Inte"><span class="constructor">Inte</span></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 id="TYPEELTt.Fde"><span class="constructor">Fde</span></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 id="VALfprint"><span class="keyword">val</span> fprint</span> : <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 id="VALeval"><span class="keyword">val</span> eval</span> : <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 id="VALmin_of_expr"><span class="keyword">val</span> min_of_expr</span> : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre> <pre><span id="VALmax_of_expr"><span class="keyword">val</span> max_of_expr</span> : <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 id="VALmin_max_of_expr"><span class="keyword">val</span> min_max_of_expr</span> : <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 id="VALcompare_expr"><span class="keyword">val</span> compare_expr</span> : <code class="type"><a href="Fcl_expr.html#TYPEt">t</a> -> <a href="Fcl_expr.html#TYPEt">t</a> -> int</code></pre> <pre><span id="VALcompare_intexpr"><span class="keyword">val</span> compare_intexpr</span> : <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 id="VALreduce"><span class="keyword">val</span> reduce</span> : <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 id="VALconstrain"><span class="keyword">val</span> constrain</span> : <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>