<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>PulseDomain (infer.InferModules.PulseDomain)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><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; <a href="../index.html">InferModules</a> &#x00BB; PulseDomain</nav><h1>Module <code>InferModules.PulseDomain</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><dl><dt class="spec type" id="type-call_event"><a href="#type-call_event" class="anchor"></a><code><span class="keyword">type</span> call_event</code><code> = </code><table class="variant"><tr id="type-call_event.Call" class="anchored"><td class="def constructor"><a href="#type-call_event.Call" class="anchor"></a><code>| </code><code><span class="constructor">Call</span> <span class="keyword">of</span> <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a></code></td><td class="doc"><p>known function with summary</p></td></tr><tr id="type-call_event.Model" class="anchored"><td class="def constructor"><a href="#type-call_event.Model" class="anchor"></a><code>| </code><code><span class="constructor">Model</span> <span class="keyword">of</span> string</code></td><td class="doc"><p>hardcoded model</p></td></tr><tr id="type-call_event.SkippedKnownCall" class="anchored"><td class="def constructor"><a href="#type-call_event.SkippedKnownCall" class="anchor"></a><code>| </code><code><span class="constructor">SkippedKnownCall</span> <span class="keyword">of</span> <a href="../../../InferIR/InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a></code></td><td class="doc"><p>known function without summary</p></td></tr><tr id="type-call_event.SkippedUnknownCall" class="anchored"><td class="def constructor"><a href="#type-call_event.SkippedUnknownCall" class="anchor"></a><code>| </code><code><span class="constructor">SkippedUnknownCall</span> <span class="keyword">of</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a></code></td><td class="doc"><p>couldn't link the expression to a proc name</p></td></tr></table></dt></dl><dl><dt class="spec value" id="val-describe_call_event"><a href="#val-describe_call_event" class="anchor"></a><code><span class="keyword">val</span> describe_call_event : <a href="index.html#module-F">F</a>.formatter <span>&#45;&gt;</span> <a href="index.html#type-call_event">call_event</a> <span>&#45;&gt;</span> unit</code></dt></dl><div class="spec module" id="module-Invalidation"><a href="#module-Invalidation" class="anchor"></a><code><span class="keyword">module</span> <a href="Invalidation/index.html">Invalidation</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-ValueHistory"><a href="#module-ValueHistory" class="anchor"></a><code><span class="keyword">module</span> <a href="ValueHistory/index.html">ValueHistory</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-InterprocAction"><a href="#module-InterprocAction" class="anchor"></a><code><span class="keyword">module</span> <a href="InterprocAction/index.html">InterprocAction</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Trace"><a href="#module-Trace" class="anchor"></a><code><span class="keyword">module</span> <a href="Trace/index.html">Trace</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Attribute"><a href="#module-Attribute" class="anchor"></a><code><span class="keyword">module</span> <a href="Attribute/index.html">Attribute</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Attributes"><a href="#module-Attributes" class="anchor"></a><code><span class="keyword">module</span> <a href="Attributes/index.html">Attributes</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-AbstractAddress"><a href="#module-AbstractAddress" class="anchor"></a><code><span class="keyword">module</span> <a href="AbstractAddress/index.html">AbstractAddress</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-AbstractAddressSet"><a href="#module-AbstractAddressSet" class="anchor"></a><code><span class="keyword">module</span> AbstractAddressSet : <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-type-PPSet">InferStdlib.PrettyPrintable.PPSet</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-type-PPSet">PPSet</a>.elt = <a href="AbstractAddress/index.html#type-t">AbstractAddress.t</a></code></div><div class="spec module" id="module-AbstractAddressMap"><a href="#module-AbstractAddressMap" class="anchor"></a><code><span class="keyword">module</span> AbstractAddressMap : <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-type-PPMap">InferStdlib.PrettyPrintable.PPMap</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-type-PPMap">PPMap</a>.key = <a href="AbstractAddress/index.html#type-t">AbstractAddress.t</a></code></div><div class="spec module" id="module-AddrTracePair"><a href="#module-AddrTracePair" class="anchor"></a><code><span class="keyword">module</span> <a href="AddrTracePair/index.html">AddrTracePair</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Stack"><a href="#module-Stack" class="anchor"></a><code><span class="keyword">module</span> <a href="Stack/index.html">Stack</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Memory"><a href="#module-Memory" class="anchor"></a><code><span class="keyword">module</span> <a href="Memory/index.html">Memory</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = </code><code>{</code><table class="record"><tr id="type-t.heap" class="anchored"><td class="def field"><a href="#type-t.heap" class="anchor"></a><code>heap : <a href="Memory/index.html#type-t">Memory.t</a>;</code></td></tr><tr id="type-t.stack" class="anchored"><td class="def field"><a href="#type-t.stack" class="anchor"></a><code>stack : <a href="Stack/index.html#type-t">Stack.t</a>;</code></td></tr></table><code>}</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt></dl><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../AbstractDomain/index.html#module-type-NoJoin">AbstractDomain.NoJoin</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../AbstractDomain/module-type-NoJoin/index.html#type-t">t</a> := <a href="index.html#type-t">t</a></code></span></summary><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-type-PrintableType">InferStdlib.PrettyPrintable.PrintableType</a></code></span></summary><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><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-F">InferStdlib.PrettyPrintable.F</a>.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt></dl></details></div></div></div><dl><dt class="spec value" id="val-(&lt;=)"><a href="#val-(&lt;=)" class="anchor"></a><code><span class="keyword">val</span> (&lt;=) : <span>lhs:<a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span>rhs:<a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> bool</code></dt><dd><p>the implication relation: <code>lhs &lt;= rhs</code> means <code>lhs |- rhs</code></p></dd></dl></details></div></div></div><dl><dt class="spec value" id="val-reachable_addresses"><a href="#val-reachable_addresses" class="anchor"></a><code><span class="keyword">val</span> reachable_addresses : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#module-AbstractAddressSet">AbstractAddressSet</a>.t</code></dt><dd><p>compute the set of abstract addresses that are &quot;used&quot; in the abstract state, i.e. reachable from the stack variables</p></dd></dl><dl><dt class="spec type" id="type-mapping"><a href="#type-mapping" class="anchor"></a><code><span class="keyword">type</span> mapping</code></dt></dl><dl><dt class="spec value" id="val-empty_mapping"><a href="#val-empty_mapping" class="anchor"></a><code><span class="keyword">val</span> empty_mapping : <a href="index.html#type-mapping">mapping</a></code></dt></dl><dl><dt class="spec type" id="type-isograph_relation"><a href="#type-isograph_relation" class="anchor"></a><code><span class="keyword">type</span> isograph_relation</code><code> = </code><table class="variant"><tr id="type-isograph_relation.NotIsomorphic" class="anchored"><td class="def constructor"><a href="#type-isograph_relation.NotIsomorphic" class="anchor"></a><code>| </code><code><span class="constructor">NotIsomorphic</span></code></td><td class="doc"><p>no mapping was found that can make LHS the same as the RHS</p></td></tr><tr id="type-isograph_relation.IsomorphicUpTo" class="anchored"><td class="def constructor"><a href="#type-isograph_relation.IsomorphicUpTo" class="anchor"></a><code>| </code><code><span class="constructor">IsomorphicUpTo</span> <span class="keyword">of</span> <a href="index.html#type-mapping">mapping</a></code></td><td class="doc"><p><code>mapping(lhs)</code> is isomorphic to <code>rhs</code></p></td></tr></table></dt></dl><dl><dt class="spec value" id="val-isograph_map"><a href="#val-isograph_map" class="anchor"></a><code><span class="keyword">val</span> isograph_map : <span>lhs:<a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span>rhs:<a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <a href="index.html#type-mapping">mapping</a> <span>&#45;&gt;</span> <a href="index.html#type-isograph_relation">isograph_relation</a></code></dt><dt class="spec value" id="val-is_isograph"><a href="#val-is_isograph" class="anchor"></a><code><span class="keyword">val</span> is_isograph : <span>lhs:<a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span>rhs:<a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <a href="index.html#type-mapping">mapping</a> <span>&#45;&gt;</span> bool</code></dt></dl></div></body></html>