<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Predicates (infer.Biabduction.Predicates)</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>»<ahref="../index.html">Biabduction</a>» Predicates</nav><h1>Module <code>Biabduction.Predicates</code></h1><navclass="toc"><ul><li><ahref="#components-of-propositions">Components of Propositions</a></li><li><ahref="#compaction">Compaction</a></li><li><ahref="#comparision-and-inspection-functions">Comparision And Inspection Functions</a></li><li><ahref="#functions-for-traversing-sil-data-types">Functions for traversing SIL data types</a></li><li><ahref="#substitution">Substitution</a></li><li><ahref="#functions-for-replacing-occurrences-of-expressions.">Functions for replacing occurrences of expressions.</a></li><li><ahref="#functions-for-constructing-or-destructing-entities-in-this-module">Functions for constructing or destructing entities in this module</a></li></ul></nav></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-offset"><ahref="#type-offset"class="anchor"></a><code><spanclass="keyword">type</span> offset</code><code> = </code><tableclass="variant"><trid="type-offset.Off_fld"class="anchored"><tdclass="def constructor"><ahref="#type-offset.Off_fld"class="anchor"></a><code>| </code><code><spanclass="constructor">Off_fld</span><spanclass="keyword">of</span><ahref="../../IR/Fieldname/index.html#type-t">IR.Fieldname.t</a> * <ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a></code></td></tr><trid="type-offset.Off_index"class="anchored"><tdclass="def constructor"><ahref="#type-offset.Off_index"class="anchor"></a><code>| </code><code><spanclass="constructor">Off_index</span><spanclass="keyword">of</span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a></code></td></tr></table></dt><dd><p>Offset for an lvalue.</p></dd></dl><section><header><h3id="components-of-propositions"><ahref="#components-of-propositions"class="anchor"></a>Components of Propositions</h3></header><dl><dtclass="spec type"id="type-atom"><ahref="#type-atom"class="anchor"></a><code><spanclass="keyword">type</span> atom</code><code> = </code><tableclass="variant"><trid="type-atom.Aeq"class="anchored"><tdclass="def constructor"><ahref="#type-atom.Aeq"class="anchor"></a><code>| </code><code><spanclass="constructor">Aeq</span><spanclass="keyword">of</span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a> * <ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a></code></td><tdclass="doc"><p>equality</p></td></tr><trid="type-atom.Aneq"class="anchored"><tdclass="def constructor"><ahref="#type-atom.Aneq"class="anchor"></a><code>| </code><code><spanclass="constructor">Aneq</span><spanclass="keyword">of</span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a> * <ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a></code></td><tdclass="doc"><p>disequality</p></td></tr><trid="type-atom.Apred"class="anchored"><tdclass="def constructor"><ahref="#type-atom.Apred"class="anchor"></a><code>| </code><code><spanclass="constructor">Apred</span><spanclass="keyword">of</span><ahref="../../IR/PredSymb/index.html#type-t">IR.PredSymb.t</a> * <span><ahref="../../IR/Exp/index.html#type-t">IR.Exp.t</a> list</span></code></td><tdclass="doc"><p>predicate symbol applied to exps</p></td></tr><trid="type-atom.Anpred"class="anchored"><tdclass="def constructor"><ahref="#type-atom.Anpred"class="anchor"></a><code>| </code><code><spanclass="constructor">Anpred</span><spanclass="keyword">of</span><ahref="../../IR/PredSymb/index.html#type-t">IR