This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
<!DOCTYPE html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>PulseExecutionDomain (infer.Pulselib.PulseExecutionDomain)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.1"/><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">Pulselib</a>» PulseExecutionDomain</nav><h1>Module <code>Pulselib.PulseExecutionDomain</code></h1></header><divclass="spec module"id="module-AbductiveDomain"><ahref="#module-AbductiveDomain"class="anchor"></a><code><spanclass="keyword">module</span> AbductiveDomain = <ahref="../index.html#module-PulseAbductiveDomain">PulseAbductiveDomain</a></code></div><divclass="spec module"id="module-LatentIssue"><ahref="#module-LatentIssue"class="anchor"></a><code><spanclass="keyword">module</span> LatentIssue = <ahref="../index.html#module-PulseLatentIssue">PulseLatentIssue</a></code></div><dl><dtclass="spec type"id="type-base_t"><ahref="#type-base_t"class="anchor"></a><code><spanclass="keyword">type</span><span>'abductive_domain_t base_t</span></code><code> = </code><tableclass="variant"><trid="type-base_t.ContinueProgram"class="anchored"><tdclass="def constructor"><ahref="#type-base_t.ContinueProgram"class="anchor"></a><code>| </code><code><spanclass="constructor">ContinueProgram</span><spanclass="keyword">of</span><spanclass="type-var">'abductive_domain_t</span></code></td><tdclass="doc"><p>represents the state at the program point</p></td></tr><trid="type-base_t.ExitProgram"class="anchored"><tdclass="def constructor"><ahref="#type-base_t.ExitProgram"class="anchor"></a><code>| </code><code><spanclass="constructor">ExitProgram</span><spanclass="keyword">of</span><ahref="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a></code></td><tdclass="doc"><p>represents the state originating at exit/divergence.</p></td></tr><trid="type-base_t.AbortProgram"class="anchored"><tdclass="def constructor"><ahref="#type-base_t.AbortProgram"class="anchor"></a><code>| </code><code><spanclass="constructor">AbortProgram</span><spanclass="keyword">of</span><ahref="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a></code></td><tdclass="doc"><p>represents the state at the program point that caused an error</p></td></tr><trid="type-base_t.LatentAbortProgram"class="anchored"><tdclass="def constructor"><ahref="#type-base_t.LatentAbortProgram"class="anchor"></a><code>| </code><code><spanclass="constructor">LatentAbortProgram</span><spanclass="keyword">of</span></code><code>{</code><tableclass="record"><trid="type-base_t.astate"class="anchored"><tdclass="def field"><ahref="#type-base_t.astate"class="anchor"></a><code>astate : <ahref="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a>;</code></td></tr><trid="type-base_t.latent_issue"class="anchored"><tdclass="def field"><ahref="#type-base_t.latent_issue"class="anchor"></a><code>latent_issue : <ahref="../PulseLatentIssue/index.html#type-t">LatentIssue.t</a>;</code></td></tr></table><code>}</code></td><tdclass="doc"><p>this path leads to an error but we don't have conclusive enough data to report it yet</p></td></tr><trid="type-base_t.LatentInvalidAccess"class="anchored"><tdclass="def constructor"><ahref="#type-base_t.LatentInvalidAccess"class="anchor"></a><code>| </code><code><spanclass="constructor">LatentInvalidAccess</span><spanclass="keyword">of</span></code><code>{</code><tableclass="record"><trid="type-base_t.astate"class="anchored"><tdclass="def field"><ahref="#type-base_t.astate"class="anchor"></a><code>astate : <ahref="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a>;</code></td></tr><trid="type-base_t.address"class="anchored"><tdclass="def field"><ahref="#type-base_t.address"class="anchor"></a><code>address : <ahref="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a>;</code></td></tr><trid="type-base_t.must_be_valid"class="anchored"><tdclass="def field"><ahref="#type-base_t.must_be_valid"class="anchor"></a><code>must_be_valid : <ahref="../PulseTrace/index.html#type-t">PulseBasicInterface.Trace.t</a>;</code></td></tr><trid="type-base_t.calling_context"class="anchored"><tdclass="def field"><ahref="#type-base_t.calling_context"class="anchor"></a><code>calling_context : <span><span>(<ahref="../PulseCallEvent/index.html#type-t">PulseBasicInterface.CallEvent.t</a> * <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a>)</span> list</span>;</code></td></tr></table><code>}</code></td><tdclass="doc"><p>if <code>address</code> is ever observed to be invalid then there is an invalid access because it <code>must_be_valid</code></p></td></tr><trid="type-base_t.ISLLatentMemoryError"class="anchored"><tdclass="def constructor"><ahref="#type-base_t.ISLLatentMemoryError"class="anchor"></a><code>| </code><code><spanclass="constructor">ISLLatentMemoryError</span><spanclass="keyword">of</span><ahref="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a></code></td><tdclass="doc"><p>represents the state at the program point that might cause an error; used for <spanclass="xref-unresolved"title="unresolved reference to "Config.pulse_isl""><code>Config</code>.pulse_isl</span></p></td></tr></table></dt><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = <span><ahref="../PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a><ahref="index.html#type-base_t">base_t</a></span></code></dt></dl><div><divclass="spec include"><divclass="doc"><detailsopen="open"><summary><spanclass="def"><code><spanclass="keyword">include</span><ahref="../../Absint/AbstractDomain/index.html#module-type-NoJoin">Absint.AbstractDomain.NoJoin</a><spanclass="keyword">with</span><spanclass="keyword">type</span><ahref="../../Absint/AbstractDomain/module-type-NoJoin/index.html#type-t">t</a> := <ahref="index.html#type-t">t</a></code></span></summary><div><divclass="spec include"><divclass="doc"><detailsopen="open"><summary><spanclass="def"><code><spanclass="keyword">include</span><ahref="../../IStdlib/PrettyPrintable/index.html#module-type-PrintableType">IStdlib.PrettyPrintable.PrintableType</a></code></span></summary><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code></dt></dl><dl><dtclass="spec value"id="val-pp"><ahref="#val-pp"class="anchor"></a><code><spanclass="keyword">val</span> pp : <ahref="../../IStdlib/PrettyPrintable/index.html#module-F">IStdlib.PrettyPrintable.F</a>.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt></dl></details></div></div></div><dl><dtclass="spec value"id="val-leq"><ahref="#val-leq"class="anchor"></a><code><spanclass="keyword">val</span> leq : <span>lhs:<ahref="index.html#type-t">t</a></span><span>-></span><span>rhs:<ahref="index.html#type-t">t</a></span><span>-></span> bool</code></dt><dd><p>the implication relation: <code>lhs <= rhs</code> means <code>lhs |- rhs</code></p></dd></dl></details></div></div></div><dl><dtclass="spec value"id="val-continue"><ahref="#val-continue"class="anchor"></a><code><spanclass="keyword">val</span> continue : <ahref="../PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dtclass="spec value"id="val-mk_initial"><ahref="#val-mk_initial"class="anchor"></a><code><spanclass="keyword">val</span> mk_initial : <ahref="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a><span>-></span><ahref="../../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dtclass="spec value"id="val-is_unsat_cheap"><ahref="#val-is_unsat_cheap"class="anchor"></a><code><spanclass="keyword">val</span> is_unsat_cheap : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dd><p>see <ahref="../PulsePathCondition/index.html#val-is_unsat_cheap"><code>PulsePathCondition.is_unsat_cheap</code></a></p></dd></dl><dl><dtclass="spec type"id="type-summary"><ahref="#type-summary"class="anchor"></a><code><spanclass="keyword">type</span> summary</code><code> = <span><ahref="../PulseAbductiveDomain/index.html#type-summary">AbductiveDomain.summary</a><ahref="index.html#type-base_t">base_t</a></span></code></dt></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare_summary"><ahref="#val-compare_summary"class="anchor"></a><code><spanclass="keyword">val</span> compare_summary : <ahref="index.html#type-summary">summary</a><span>-></span><ahref="index.html#type-summary">summary</a><span>-></span> int</code></dt><dtclass="spec value"id="val-equal_summary"><ahref="#val-equal_summary"class="anchor"></a><code><spanclass="keyword">val</span> equal_summary : <ahref="index.html#type-summary">summary</a><span>-></span><ahref="index.html#type-summary">summary</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-yojson_of_summary"><ahref="#val-yojson_of_summary"class="anchor"></a><code><spanclass="keyword">val</span> yojson_of_summary : <ahref="index.html#type-summary">summary</a><span>-></span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div></div></body></html>