<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>PulseOperations (infer.Pulselib.PulseOperations)</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>» PulseOperations</nav><h1>Module <code>Pulselib.PulseOperations</code></h1></header><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = <ahref="../PulseAbductiveDomain/index.html#type-t">PulseDomainInterface.AbductiveDomain.t</a></code></dt><dtclass="spec type"id="type-access_result"><ahref="#type-access_result"class="anchor"></a><code><spanclass="keyword">type</span><span>'a access_result</span></code><code> = <span><span>(<spanclass="type-var">'a</span>,<ahref="../PulseDiagnostic/index.html#type-t">PulseBasicInterface.Diagnostic.t</a> * <ahref="index.html#type-t">t</a>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.result</span></code></dt></dl><dl><dtclass="spec value"id="val-ok_continue"><ahref="#val-ok_continue"class="anchor"></a><code><spanclass="keyword">val</span> ok_continue : <ahref="index.html#type-t">t</a><span>-></span><span><span>(<span><ahref="../PulseExecutionDomain/index.html#type-t">PulseDomainInterface.ExecutionDomain.t</a> list</span>,<spanclass="type-var">'a</span>)</span><ahref="../../IStdlib/index.html#module-IStd">IStdlib.IStd</a>.result</span></code></dt><dtclass="spec value"id="val-check_addr_access"><ahref="#val-check_addr_access"class="anchor"></a><code><spanclass="keyword">val</span> check_addr_access : <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>(<ahref="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <ahref="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-t">t</a><ahref="index.html#type-access_result">access_result</a></span></code></dt><dd><p>Check that the <code>address</code> is not known to be invalid</p></dd></dl><divclass="spec module"id="module-Closures"><ahref="#module-Closures"class="anchor"></a><code><spanclass="keyword">module</span><ahref="Closures/index.html">Closures</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div><dl><dtclass="spec value"id="val-eval"><ahref="#val-eval"class="anchor"></a><code><spanclass="keyword">val</span> eval : <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span><span><span>(<ahref="index.html#type-t">t</a> * <span>(<ahref="../PulseAbstractValue/index.html#type-t">PulseBasicInterface.AbstractValue.t</a> * <ahref="../PulseValueHistory/index.html#type-t">PulseBasicInterface.ValueHistory.t</a>)</span>)</span><ahref="index.html#type-access_result">access_result</a></span></code></dt><dd><p>Use the stack and heap to evaluate the given expression down to an abstract address representing its value.</p><p>Return an error state if it traverses some known invalid address or if the end destination is known to be invalid.</p></dd></dl><dl><dtclass="spec value"id="val-prune"><ahref="#val-prune"class="anchor"></a><code><spanclass="keyword">val</span> prune : <ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><span>condition:<ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a></span><span>-></span><ahref="index.html#type-t">t</a><span>-></