<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Pulselib__PulseAbductiveDomain (infer.Pulselib__PulseAbductiveDomain)</title><linkrel="stylesheet"href="../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.2"/><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__PulseAbductiveDomain</nav><h1>Module <code>Pulselib__PulseAbductiveDomain</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><divclass="spec module"id="module-BaseAddressAttributes"><ahref="#module-BaseAddressAttributes"class="anchor"></a><code><spanclass="keyword">module</span> BaseAddressAttributes = <ahref="../Pulselib/index.html#module-PulseBaseAddressAttributes">Pulselib.PulseBaseAddressAttributes</a></code></div><divclass="spec module"id="module-BaseDomain"><ahref="#module-BaseDomain"class="anchor"></a><code><spanclass="keyword">module</span> BaseDomain = <ahref="../Pulselib/index.html#module-PulseBaseDomain">Pulselib.PulseBaseDomain</a></code></div><divclass="spec module"id="module-BaseMemory"><ahref="#module-BaseMemory"class="anchor"></a><code><spanclass="keyword">module</span> BaseMemory = <ahref="../Pulselib/index.html#module-PulseBaseMemory">Pulselib.PulseBaseMemory</a></code></div><divclass="spec module"id="module-BaseStack"><ahref="#module-BaseStack"class="anchor"></a><code><spanclass="keyword">module</span> BaseStack = <ahref="../Pulselib/index.html#module-PulseBaseStack">Pulselib.PulseBaseStack</a></code></div><aside><p>Layer on top of <ahref="BaseDomain/index.html"><code>BaseDomain</code></a> to propagate operations on the current state to the pre-condition when necessary</p><p>The abstract type <code>t</code> is a pre/post pair in the style of biabduction.</p></aside><dl><dtclass="spec module-type"id="module-type-BaseDomainSig"><ahref="#module-type-BaseDomainSig"class="anchor"></a><code><spanclass="keyword">module</span><spanclass="keyword">type</span><ahref="module-type-BaseDomainSig/index.html">BaseDomainSig</a> = <spanclass="keyword">sig</span> ... <spanclass="keyword">end</span></code></dt><dd><p>signature common to the "normal"<code>Domain</code>, representing the post at the current program point, and the inverted <code>PreDomain</code>, representing the inferred pre-condition</p></dd></dl><dl><dtclass="spec module"id="module-PostDomain"><ahref="#module-PostDomain"class="anchor"></a><code><spanclass="keyword">module</span><ahref="PostDomain/index.html">PostDomain</a> : <ahref="index.html#module-type-BaseDomainSig">BaseDomainSig</a></code></dt><dd><p>The post abstract state at each program point, or current state.</p></dd></dl><dl><dtclass="spec module"id="module-PreDomain"><ahref="#module-PreDomain"class="anchor"></a><code><spanclass="keyword">module</span><ahref="PreDomain/index.html">PreDomain</a> : <ahref="index.html#module-type-BaseDomainSig">BaseDomainSig</a></code></dt><dd><p>The inferred pre-condition at each program point, biabduction style.</p></dd></dl><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = <spanclass="keyword">private</span></code><code>{</code><tableclass="record"><trid="type-t.post"class="anchored"><tdclass="def field"><ahref="#type-t.post"class="anchor"></a><code>post : <ahref="PostDomain/index.html#type-t">PostDomain.t</a>;</code></td><tdclass="doc"><p>state at the current program point</p></td></tr><trid="type-t.pre"class="anchored"><tdclass="def field"><ahref="#type-t.pre"class="anchor"></a><code>pre : <ahref="PreDomain/index.html#type-t">PreDomain.t</a>;</code></td><tdclass="doc"><p>inferred procedure pre-condition leading to the current program point</p></t