You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

9 lines
28 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>InferIR__PredSymb (InferIR.InferIR__PredSymb)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> &mdash; <span class="package">package <a href="../index.html">InferIR</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferIR__PredSymb</span></h1></header><p>The Smallfoot Intermediate Language: Predicate Symbols</p><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>F = Format</code></div><div class="doc"></div></div><h3>Programs and Types</h3><div class="spec type" id="type-func_attribute"><a href="#type-func_attribute" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>func_attribute</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-func_attribute.FA_sentinel" class="anchored"><td class="def constructor"><a href="#type-func_attribute.FA_sentinel" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">FA_sentinel</span><span class="keyword"> of </span>int<span class="keyword"> * </span>int</code></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare_func_attribute"><a href="#val-compare_func_attribute" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_func_attribute : <a href="index.html#type-func_attribute">func_attribute</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-func_attribute">func_attribute</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-pp_func_attribute"><a href="#val-pp_func_attribute" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_func_attribute : <a href="index.html#module-F">F</a>.formatter <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-func_attribute">func_attribute</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-get_sentinel_func_attribute_value"><a href="#val-get_sentinel_func_attribute_value" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_sentinel_func_attribute_value : <a href="index.html#type-func_attribute">func_attribute</a> list <span class="keyword">&#8209;&gt;</span> (int<span class="keyword"> * </span>int) option</code></div><div class="doc"><p>Return the value of the FA_sentinel attribute in <code class="code">attr_list</code> if it is found</p></div></div><div class="spec type" id="type-access"><a href="#type-access" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>access</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-access.Default" class="anchored"><td class="def constructor"><a href="#type-access.Default" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Default</span></code></td></tr><tr id="type-access.Public" class="anchored"><td class="def constructor"><a href="#type-access.Public" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Public</span></code></td></tr><tr id="type-access.Private" class="anchored"><td class="def constructor"><a href="#type-access.Private" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Private</span></code></td></tr><tr id="type-access.Protected
Anpred atomic formulas. Many operations don't make much sense for nullary predicates, and are
generally treated as no-ops. The first argument is treated specially, as the &quot;anchor&quot; of the
predicate application. For example, adding or removing an attribute uses the anchor to identify
the atom to operate on. Also, abstraction and normalization operations treat the anchor
specially and maintain more information on it than other arguments. Therefore when attaching an
attribute to an expression, that expression should be the first argument, optionally followed by
additional related expressions.</p></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-mem_alloc_pname"><a href="#val-mem_alloc_pname" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_alloc_pname : <a href="index.html#type-mem_kind">mem_kind</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a></code></div><div class="doc"><p>name of the allocation function for the given memory kind</p></div></div><div class="spec val" id="val-mem_dealloc_pname"><a href="#val-mem_dealloc_pname" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_dealloc_pname : <a href="index.html#type-mem_kind">mem_kind</a> <span class="keyword">&#8209;&gt;</span> <a href="../InferIR/Typ/Procname/index.html#type-t">InferIR.Typ.Procname.t</a></code></div><div class="doc"><p>name of the deallocation function for the given memory kind</p></div></div><div class="spec type" id="type-category"><a href="#type-category" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>category</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-category.ACresource" class="anchored"><td class="def constructor"><a href="#type-category.ACresource" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACresource</span></code></td></tr><tr id="type-category.ACautorelease" class="anchored"><td class="def constructor"><a href="#type-category.ACautorelease" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACautorelease</span></code></td></tr><tr id="type-category.AClock" class="anchored"><td class="def constructor"><a href="#type-category.AClock" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">AClock</span></code></td></tr><tr id="type-category.ACdiv0" class="anchored"><td class="def constructor"><a href="#type-category.ACdiv0" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACdiv0</span></code></td></tr><tr id="type-category.ACobjc_null" class="anchored"><td class="def constructor"><a href="#type-category.ACobjc_null" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACobjc_null</span></code></td></tr><tr id="type-category.ACundef" class="anchored"><td class="def constructor"><a href="#type-category.ACundef" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACundef</span></code></td></tr><tr id="type-category.ACretval" class="anchored"><td class="def constructor"><a href="#type-category.ACretval" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACretval</span></code></td></tr><tr id="type-category.ACobserver" class="anchored"><td class="def constructor"><a href="#type-category.ACobserver" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">ACobserver</span></code></td></tr><tr id="type-category.ACwontleak" class