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.

4 lines
23 KiB

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IdAccessPathMapDomain (infer.InferModules.IdAccessPathMapDomain)</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">infer</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">InferModules.IdAccessPathMapDomain</span></h1></header><p>mapping of ids to raw access paths. useful for id-normalizing access paths</p><div class="spec module" id="module-IdMap"><a href="#module-IdMap" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>IdMap = <a href="../../../InferIR/InferIR/Var/index.html#module-Map">InferIR.Var.Map</a></code></div><div class="doc"></div></div><div class="spec type" id="type-astate"><a href="#type-astate" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>astate</code><code><span class="keyword"> = </span><a href="../../../InferIR/InferIR/AccessExpression/index.html#type-t">InferIR.AccessExpression.t</a> <a href="index.html#module-IdMap">IdMap</a>.t</code><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">module type of </span><a href="index.html#module-IdMap">IdMap</a></code></span></summary><div class="spec type" id="type-key"><a href="#type-key" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>key</code><code><span class="keyword"> = </span><a href="../../../InferIR/InferIR__Var/index.html#type-t">InferIR__Var.t</a></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <a href="../../../InferIR/InferIR__Var/index.html#module-Map">InferIR__Var.Map</a>.t</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-empty"><a href="#val-empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>empty : <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_empty : <span class="type-var">'a</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"><a href="#val-mem" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</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-add"><a href="#val-add" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-update"><a href="#val-update" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>update : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> option <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-singleton"><a href="#val-singleton" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>singleton : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-remove"><a href="#val-remove" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-merge"><a href="#val-merge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>merge : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-union"><a href="#val-union" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>union : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><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 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></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 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</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-iter"><a href="#val-iter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-fold"><a href="#val-fold" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"></div></div><div class="spec val" id="val-for_all"><a href="#val-for_all" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</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-exists"><a href="#val-exists" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</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-filter"><a href="#val-filter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>filter : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-partition"><a href="#val-partition" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>partition : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-cardinal"><a href="#val-cardinal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cardinal : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-bindings"><a href="#val-bindings" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bindings : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) list</code></div><div class="doc"></div></div><div class="spec val" id="val-min_binding"><a href="#val-min_binding" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>min_binding : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-min_binding_opt"><a href="#val-min_binding_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>min_binding_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"></div></div><div class="spec val" id="val-max_binding"><a href="#val-max_binding" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>max_binding : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-max_binding_opt"><a href="#val-max_binding_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>max_binding_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"></div></div><div class="spec val" id="val-choose"><a href="#val-choose" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>choose : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-choose_opt"><a href="#val-choose_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>choose_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"></div></div><div class="spec val" id="val-split"><a href="#val-split" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>split : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a><span class="keyword"> * </span><span class="type-var">'a</span> option<span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-find"><a href="#val-find" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-find_opt"><a href="#val-find_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_opt : <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"></div></div><div class="spec val" id="val-find_first"><a href="#val-find_first" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_first : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-find_first_opt"><a href="#val-find_first_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_first_opt : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"></div></div><div class="spec val" id="val-find_last"><a href="#val-find_last" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_last : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-find_last_opt"><a href="#val-find_last_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_last_opt : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"></div></div><div class="spec val" id="val-map"><a href="#val-map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-mapi"><a href="#val-mapi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mapi : (<a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-pp_key"><a href="#val-pp_key" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_key : <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-F">InferStdlib.PrettyPrintable.F</a>.formatter <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : pp_value:(<a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-F">InferStdlib.PrettyPrintable.F</a>.formatter <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <a href="../../../InferStdlib/InferStdlib/PrettyPrintable/index.html#module-F">InferStdlib.PrettyPrintable.F</a>.formatter <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div></details></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><a href="../AbstractDomain/index.html#module-type-WithBottom">AbstractDomain.WithBottom</a><span class="keyword"> with </span><span class="keyword">type </span><a href="../AbstractDomain/module-type-WithBottom/index.html#type-astate">astate</a> := <a href="index.html#type-astate">astate</a></code></span></summary><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><a href="../AbstractDomain/index.html#module-type-S">AbstractDomain.S</a></code></span></summary><div class="spec type" id="type-astate"><a href="#type-astate" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>astate</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-(&lt;=)"><a href="#val-(&lt;=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&lt;=) : lhs:<a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> rhs:<a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>the partial order induced by join</p></div></div><div class="spec val" id="val-join"><a href="#val-join" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>join : <a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-astate">astate</a></code></div><div class="doc"></div></div><div class="spec val" id="val-widen"><a href="#val-widen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>widen : prev:<a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> next:<a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> num_iters:int <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-astate">astate</a></code></div><div class="doc"></div></div><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : <a href="../AbstractDomain/index.html#module-F">InferModules.AbstractDomain.F</a>.formatter <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div></details></div><div class="spec val" id="val-empty"><a href="#val-empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>empty : <a href="index.html#type-astate">astate</a></code></div><div class="doc"><p>The bottom value of the domain.
Naming it empty instead of bottom helps to bind the empty
value for sets and maps to the natural definition for bottom</p></div></div><div class="spec val" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_empty : <a href="index.html#type-astate">astate</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Return true if this is the bottom value</p></div></div></details></div></body></html>