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