<html><head> <link rel="stylesheet" href="style.css" type="text/css"> <link rel="Start" 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>Invariant</title> </head> <body> <code class="code"><span class="keyword">sig</span><br> <span class="keyword">type</span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) t<br> <span class="keyword">type</span> setable<br> <span class="keyword">type</span> unsetable<br> <span class="keyword">type</span> <span class="keywordsign">'</span>a setable_t = (<span class="keywordsign">'</span>a, <span class="constructor">Invariant</span>.setable) <span class="constructor">Invariant</span>.t<br> <span class="keyword">type</span> <span class="keywordsign">'</span>a unsetable_t = (<span class="keywordsign">'</span>a, <span class="constructor">Invariant</span>.unsetable) <span class="constructor">Invariant</span>.t<br> <span class="keyword">val</span> create : ?name:string <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Invariant</span>.setable_t<br> <span class="keyword">val</span> constant : ?name:string <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> set : <span class="keywordsign">'</span>a <span class="constructor">Invariant</span>.setable_t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> get : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a<br> <span class="keyword">val</span> id : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> int<br> <span class="keyword">val</span> name : (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> string<br> <span class="keyword">val</span> fprint :<br> <span class="constructor">Pervasives</span>.out_channel <span class="keywordsign">-></span><br> ?printer:(<span class="constructor">Pervasives</span>.out_channel <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="keywordsign">-></span> unit) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> unit<br> <span class="keyword">val</span> unary :<br> ?name:string <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b) <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>c) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> binary :<br> ?name:string <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>c) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>d) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>e) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>c <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> ternary :<br> ?name:string <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>b <span class="keywordsign">-></span> <span class="keywordsign">'</span>c <span class="keywordsign">-></span> <span class="keywordsign">'</span>d) <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>e) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span><br> (<span class="keywordsign">'</span>b, <span class="keywordsign">'</span>f) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> (<span class="keywordsign">'</span>c, <span class="keywordsign">'</span>g) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>d <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> sum : (int, <span class="keywordsign">'</span>a) <span class="constructor">Invariant</span>.t array <span class="keywordsign">-></span> int <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> prod : (int, <span class="keywordsign">'</span>a) <span class="constructor">Invariant</span>.t array <span class="keywordsign">-></span> int <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">module</span> <span class="constructor">Array</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">val</span> get :<br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t array <span class="keywordsign">-></span><br> (int, <span class="keywordsign">'</span>c) <span class="constructor">Invariant</span>.t <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> argmin :<br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t array <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>c) <span class="keywordsign">-></span> int <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> min :<br> (<span class="keywordsign">'</span>a, <span class="keywordsign">'</span>b) <span class="constructor">Invariant</span>.t array <span class="keywordsign">-></span> (<span class="keywordsign">'</span>a <span class="keywordsign">-></span> <span class="keywordsign">'</span>c) <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="keyword">type</span> <span class="constructor">FD</span> =<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> fd<br> <span class="keyword">type</span> elt<br> <span class="keyword">val</span> min : <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.fd <span class="keywordsign">-></span> <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.elt <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> max : <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.fd <span class="keywordsign">-></span> <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.elt <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> size : <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.fd <span class="keywordsign">-></span> int <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> is_var : <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.fd <span class="keywordsign">-></span> bool <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">val</span> unary :<br> ?name:string <span class="keywordsign">-></span><br> (<span class="constructor">Invariant</span>.<span class="constructor">FD</span>.fd <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span><br> <span class="constructor">Invariant</span>.<span class="constructor">FD</span>.fd <span class="keywordsign">-></span> <span class="keywordsign">'</span>a <span class="constructor">Invariant</span>.unsetable_t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">Fd</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> fd = <span class="constructor">Var</span>.<span class="constructor">Fd</span>.t<br> <span class="keyword">type</span> elt = <span class="constructor">Var</span>.<span class="constructor">Fd</span>.elt<br> <span class="keyword">val</span> min : fd <span class="keywordsign">-></span> elt unsetable_t<br> <span class="keyword">val</span> max : fd <span class="keywordsign">-></span> elt unsetable_t<br> <span class="keyword">val</span> size : fd <span class="keywordsign">-></span> int unsetable_t<br> <span class="keyword">val</span> is_var : fd <span class="keywordsign">-></span> bool unsetable_t<br> <span class="keyword">val</span> unary : ?name:string <span class="keywordsign">-></span> (fd <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> fd <span class="keywordsign">-></span> <span class="keywordsign">'</span>a unsetable_t<br> <span class="keyword">end</span><br> <span class="keyword">module</span> <span class="constructor">SetFd</span> :<br> <span class="keyword">sig</span><br> <span class="keyword">type</span> fd = <span class="constructor">Var</span>.<span class="constructor">SetFd</span>.t<br> <span class="keyword">type</span> elt = <span class="constructor">Var</span>.<span class="constructor">SetFd</span>.elt<br> <span class="keyword">val</span> min : fd <span class="keywordsign">-></span> elt unsetable_t<br> <span class="keyword">val</span> max : fd <span class="keywordsign">-></span> elt unsetable_t<br> <span class="keyword">val</span> size : fd <span class="keywordsign">-></span> int unsetable_t<br> <span class="keyword">val</span> is_var : fd <span class="keywordsign">-></span> bool unsetable_t<br> <span class="keyword">val</span> unary : ?name:string <span class="keywordsign">-></span> (fd <span class="keywordsign">-></span> <span class="keywordsign">'</span>a) <span class="keywordsign">-></span> fd <span class="keywordsign">-></span> <span class="keywordsign">'</span>a unsetable_t<br> <span class="keyword">end</span><br> <span class="keyword">end</span></code></body></html>