<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>ConstraintSolver (infer.Costlib.ConstraintSolver)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Costlib</a>» ConstraintSolver</nav><h1>Module <code>Costlib.ConstraintSolver</code></h1></header><divclass="spec module"id="module-F"><ahref="#module-F"class="anchor"></a><code><spanclass="keyword">module</span> F = Stdlib.Format</code></div><divclass="spec module"id="module-BasicCost"><ahref="#module-BasicCost"class="anchor"></a><code><spanclass="keyword">module</span> BasicCost = <ahref="../CostDomain/index.html#module-BasicCost">CostDomain.BasicCost</a></code></div><divclass="spec module"id="module-Node"><ahref="#module-Node"class="anchor"></a><code><spanclass="keyword">module</span> Node = <ahref="../../Absint/ProcCfg/index.html#module-DefaultNode">Absint.ProcCfg.DefaultNode</a></code></div><dl><dtclass="spec type"id="type-debug"><ahref="#type-debug"class="anchor"></a><code><spanclass="keyword">type</span> debug</code><code> = </code><code>{</code><tableclass="record"><trid="type-debug.f"class="anchored"><tdclass="def field"><ahref="#type-debug.f"class="anchor"></a><code>f : a. <span><span>(<spanclass="type-var">'a</span>,<ahref="index.html#module-F">F</a>.formatter,unit,unit)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.format4</span><span>-></span><spanclass="type-var">'a</span>;</code></td></tr></table><code>}</code></dt></dl><divclass="spec module"id="module-Equalities"><ahref="#module-Equalities"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Equalities/index.html">Equalities</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><dl><dtclass="spec value"id="val-compute_costs"><ahref="#val-compute_costs"class="anchor"></a><code><spanclass="keyword">val</span> compute_costs : <span>debug:<ahref="index.html#type-debug">debug</a></span><span>-></span><span><ahref="../../Costlib__CostDomain/BasicCost/index.html#type-t">BasicCost.t</a><ahref="../../Absint__ProcCfg/DefaultNode/index.html#module-IdMap">Node.IdMap</a>.t</span><span>-></span><ahref="Equalities/index.html#type-t">Equalities.t</a><span>-></span> unit</code></dt><dd><p>repeatedly improve the costs given the constraints</p></dd></dl><dl><dtclass="spec value"id="val-get_node_nb_exec"><ahref="#val-get_node_nb_exec"class="anchor"></a><code><spanclass="keyword">val</span> get_node_nb_exec : <ahref="Equalities/index.html#type-t">Equalities.t</a><span>-></span><ahref="../../Absint__ProcCfg/DefaultNode/index.html#type-t">Node.t</a><span>-></span><ahref="../../Costlib__CostDomain/BasicCost/index.html#type-t">BasicCost.t</a></code></dt><dd><p>compute the number of times a node is executed by taking into account the program structural (e.g. control-flow) constraints</p></dd></dl><dl><dtclass="spec value"id="val-collect_constraints"><ahref="#val-collect_constraints"class="anchor"></a><code><spanclass="keyword">val</span> collect_constraints : <span>debug:<ahref="index.html#type-debug">debug</a></span><span>-></span><ahref="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a><span>-></span><ahref="Equalities/index.html#type-t">Equalities.t</a></code></dt><dd><p>collect initial constraints for a CFG</p></dd></dl></div></body></html>