<html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <link rel="Start" href="index.html"> <link rel="previous" href="Invariant.html"> <link rel="next" href="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="Domain" rel="Chapter" href="Domain.html"> <link title="SetDomain" rel="Chapter" href="SetDomain.html"> <link title="Stak" rel="Chapter" href="Stak.html"> <link title="Data" rel="Chapter" href="Data.html"> <link title="Cstr" rel="Chapter" href="Cstr.html"> <link title="Var" rel="Chapter" href="Var.html"> <link title="Invariant" rel="Chapter" href="Invariant.html"> <link title="Reify" rel="Chapter" href="Reify.html"> <link title="Arith" rel="Chapter" href="Arith.html"> <link title="Conjunto" rel="Chapter" href="Conjunto.html"> <link title="Goals" rel="Chapter" href="Goals.html"> <link title="FdArray" rel="Chapter" href="FdArray.html"> <link title="Gcc" rel="Chapter" href="Gcc.html"> <link title="Alldiff" rel="Chapter" href="Alldiff.html"> <link title="Sorting" rel="Chapter" href="Sorting.html"> <link title="Interval" rel="Chapter" href="Interval.html"><title>Reify</title> </head> <body> <div class="navbar"><a href="Invariant.html">Previous</a> <a href="index.html">Up</a> <a href="Arith.html">Next</a> </div> <center><h1>Module <a href="type_Reify.html">Reify</a></h1></center> <br> <pre><span class="keyword">module</span> Reify: <code class="code">sig</code> <a href="Reify.html">..</a> <code class="code">end</code></pre>Constraints Reification<br> <hr width="100%"> <br> All the reification functions and operators only work on <b>reifiable</b> constraints, i.e. constraints endowed with a <code class="code">check</code> function <b>and</b> a <code class="code">not</code> function (or built-in constraints for which the documentation does not mention "Not reifiable"). Otherwise a <code class="code">Failure</code> (fatal error) exception is raised.<br> <pre><span class="keyword">val</span> <a name="VALboolean"></a>boolean : <code class="type">?delay_on_negation:bool -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> Var.Fd.t</code></pre><div class="info"> <code class="code">boolean ~delay_on_negation:true c</code> returns a boolean (0..1) variable associated to the constraint <code class="code">c</code>. The constraint is satisfied iff the boolean variable is instantiated to 1. Conversely, its negation is satisfied iff it is instantiated to 0. The waking conditions of the contraint relating <code class="code">c</code> and the boolean variable are the ones set by the <code class="code">delay</code> function of <code class="code">c</code> (set by the <code class="code">delay</code> argument of <code class="code">Cstr.create</code>). If the optional argument <code class="code">delay_on_negation</code> is set to <code class="code">true</code>, the new constraint is also attached to the events that awake the negation of <code class="code">c</code> (i.e. the constraint returned by the <code class="code">not</code> function of <code class="code">c</code>), otherwise it is not. <code class="code">delay_on_negation</code> default value is <code class="code">true</code>.<br> </div> <pre><span class="keyword">val</span> <a name="VALcstr"></a>cstr : <code class="type">?delay_on_negation:bool -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> Var.Fd.t -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><div class="info"> <code class="code">cstr ~delay_on_negation:true c b</code> is equivalent to the constraint <code class="code">boolean ?delay_on_negation c =~ b</code>. <code class="code">delay_on_negation</code> default value is <code class="code">true</code>.<br> </div> <br> <br> <pre><span class="keyword">val</span> <a name="VAL(&&~~)"></a>(&&~~) : <code class="type"><a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><pre><span class="keyword">val</span> <a name="VAL(||~~)"></a>(||~~) : <code class="type"><a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><pre><span class="keyword">val</span> <a name="VAL(=>~~)"></a>(=>~~) : <code class="type"><a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><pre><span class="keyword">val</span> <a name="VAL(<=>~~)"></a>(<=>~~) : <code class="type"><a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><pre><span class="keyword">val</span> <a name="VALxor"></a>xor : <code class="type"><a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><pre><span class="keyword">val</span> <a name="VALnot"></a>not : <code class="type"><a href="Cstr.html#TYPEt">Cstr.t</a> -> <a href="Cstr.html#TYPEt">Cstr.t</a></code></pre><div class="info"> Logical reification operators on constraints, namely and, or, implies, equivalent, exclusive or, not.<br> </div> </body></html>