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>Pulselib__PulseBaseDomain (infer.Pulselib__PulseBaseDomain)</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>» Pulselib__PulseBaseDomain</nav><h1>Module <code>Pulselib__PulseBaseDomain</code></h1></header><divclass="spec module"id="module-Memory"><ahref="#module-Memory"class="anchor"></a><code><spanclass="keyword">module</span> Memory = <ahref="../Pulselib/index.html#module-PulseBaseMemory">Pulselib.PulseBaseMemory</a></code></div><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-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="../Pulselib/PulseBaseMemory/index.html#type-t">Pulselib.PulseBaseMemory.t</a>;</code></td></tr><trid="type-t.stack"class="anchored"><tdclass="def field"><ahref="#type-t.stack"class="anchor"></a><code>stack : <ahref="../Pulselib/PulseBaseStack/index.html#type-t">Pulselib.PulseBaseStack.t</a>;</code></td></tr><trid="type-t.attrs"class="anchored"><tdclass="def field"><ahref="#type-t.attrs"class="anchor"></a><code>attrs : <ahref="../Pulselib/PulseBaseAddressAttributes/index.html#type-t">Pulselib.PulseBaseAddressAttributes.t</a>;</code></td></tr></table><code>}</code></dt></dl><div><divclass="spec include"><divclass="doc"><dl><dtclass="spec value"id="val-compare"><ahref="#val-compare"class="anchor"></a><code><spanclass="keyword">val</span> compare : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> int</code></dt><dtclass="spec value"id="val-equal"><ahref="#val-equal"class="anchor"></a><code><spanclass="keyword">val</span> equal : <ahref="index.html#type-t">t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-yojson_of_t"><ahref="#val-yojson_of_t"class="anchor"></a><code><spanclass="keyword">val</span> yojson_of_t : <ahref="index.html#type-t">t</a><span>-></span> Ppx_yojson_conv_lib.Yojson.Safe.t</code></dt></dl></div></div></div><dl><dtclass="spec type"id="type-cell"><ahref="#type-cell"class="anchor"></a><code><spanclass="keyword">type</span> cell</code><code> = <ahref="../Pulselib/PulseBaseMemory/Edges/index.html#type-t">Pulselib.PulseBaseMemory.Edges.t</a> * <ahref="../Pulselib/PulseBasicInterface/Attributes/index.html#type-t">Pulselib.PulseBasicInterface.Attributes.t</a></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><dtclass="spec value"id="val-reachable_addresses"><ahref="#val-reachable_addresses"class="anchor"></a><code><spanclass="keyword">val</span> reachable_addresses : <span>?⁠var_filter:<span>(<ahref="../IR/Var/index.html#type-t">IR.Var.t</a><span>-></span> bool)</span></span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><ahref="../Pulselib__PulseAbstractValue/index.html#module-Set">Pulselib.PulseBasicInterface.AbstractValue.Set</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 value"id="val-reachable_addresses_from"><ahref="#val-reachable_addresses_from"class="anchor"></a><code><spanclass="keyword">val</span> reachable_addresses_from : <span><ahref="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> Stdlib.Seq.t</span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><ahref="../Pulselib__PulseAbstractValue/index.html#module-Set">Pulselib.PulseBasicInterface.AbstractValue.Set</a>.t</code></dt><dd><p>compute the set of abstract addresses that are reachable from given abstract addresses</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><dtclass="spec value"id="val-find_cell_opt"><ahref="#val-find_cell_opt"class="anchor"></a><code><spanclass="keyword">val</span> find_cell_opt : <ahref="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-cell">cell</a> option</span></code></dt><dtclass="spec value"id="val-pp"><ahref="#val-pp"class="anchor"></a><code><spanclass="keyword">val</span> pp : <ahref="index.html#module-F">F</a>.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt><dtclass="spec value"id="val-subst_var"><ahref="#val-subst_var"class="anchor"></a><code><spanclass="keyword">val</span> subst_var : <span>(<ahref="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> * <ahref="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a>)</span><span>-></span><ahref="index.html#type-t">t</a><span>-></span><span><ahref="index.html#type-t">t</a><ahref="../Pulselib/PulseSatUnsat/index.html#type-t">Pulselib.PulseBasicInterface.SatUnsat.t</a></span></code></dt></dl><divclass="spec module"id="module-GraphVisit"><ahref="#module-GraphVisit"class="anchor"></a><code><spanclass="keyword">module</span><ahref="GraphVisit/index.html">GraphVisit</a> : <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></div></div></body></html>