You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2 lines
5.3 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseCItv (infer.Pulselib__PulseCItv)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../index.html">infer</a> &#x00BB; Pulselib__PulseCItv</nav><h1>Module <code>Pulselib__PulseCItv</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><aside><p>Concrete interval domain (CItv)</p></aside><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><div><div class="spec include"><div class="doc"><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt></dl></div></div></div><dl><dt class="spec value" id="val-equal_to"><a href="#val-equal_to" class="anchor"></a><code><span class="keyword">val</span> equal_to : <a href="../IR/IntLit/index.html#type-t">IR.IntLit.t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_equal_to_zero"><a href="#val-is_equal_to_zero" class="anchor"></a><code><span class="keyword">val</span> is_equal_to_zero : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <a href="index.html#module-F">F</a>.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt></dl><dl><dt class="spec type" id="type-abduction_result"><a href="#type-abduction_result" class="anchor"></a><code><span class="keyword">type</span> abduction_result</code><code> = </code><table class="variant"><tr id="type-abduction_result.Unsatisfiable" class="anchored"><td class="def constructor"><a href="#type-abduction_result.Unsatisfiable" class="anchor"></a><code>| </code><code><span class="constructor">Unsatisfiable</span></code></td><td class="doc"><p>the assertion is never true given the parameters</p></td></tr><tr id="type-abduction_result.Satisfiable" class="anchored"><td class="def constructor"><a href="#type-abduction_result.Satisfiable" class="anchor"></a><code>| </code><code><span class="constructor">Satisfiable</span> <span class="keyword">of</span> <span><a href="index.html#type-t">t</a> option</span> * <span><a href="index.html#type-t">t</a> option</span></code></td><td class="doc"><p>the assertion is satisfiable and when it is true then the lhs and rhs can be optionally refined to the given new intervals</p></td></tr></table></dt></dl><dl><dt class="spec value" id="val-abduce_binop_is_true"><a href="#val-abduce_binop_is_true" class="anchor"></a><code><span class="keyword">val</span> abduce_binop_is_true : <span>negated:bool</span> <span>&#45;&gt;</span> <a href="../IR/Binop/index.html#type-t">IR.Binop.t</a> <span>&#45;&gt;</span> <span><a href="index.html#type-t">t</a> option</span> <span>&#45;&gt;</span> <span><a href="index.html#type-t">t</a> option</span> <span>&#45;&gt;</span> <a href="index.html#type-abduction_result">abduction_result</a></code></dt><dd><p>given <code>arith_lhs_opt bop arith_rhs_opt</code> and if not <code>negated</code>, return either</p><ul><li><code>Unsatisfiable</code> iff lhs bop rhs = ∅</li></ul><ul><li><code>Satisfiable (abduced_lhs_opt,abduced_rhs_opt)</code> iff lhs bop rhs ≠ ∅, such that (taking lhs=true if lhs_opt is <code>None</code>, same for rhs) <code>abduced_lhs_opt=Some alhs</code> if (lhs bop rhs ≠ ∅ =&gt; alhs⇔lhs) (and similarly for rhs)</li></ul><p>If <code>negated<