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.

2 lines
20 KiB

This file contains ambiguous Unicode characters!

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>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>BufferOverrunSemantics (infer.InferModules.BufferOverrunSemantics)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">InferModules</a> &#x00BB; BufferOverrunSemantics</nav><h1>Module <code>InferModules.BufferOverrunSemantics</code></h1></header><dl><dt class="spec value" id="val-eval_const"><a href="#val-eval_const" class="anchor"></a><code><span class="keyword">val</span> eval_const : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Const/index.html#type-t">InferIR.Const.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-must_alias"><a href="#val-must_alias" class="anchor"></a><code><span class="keyword">val</span> must_alias : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-must_alias_opt"><a href="#val-must_alias_opt" class="anchor"></a><code><span class="keyword">val</span> must_alias_opt : <span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</span> <span>&#45;&gt;</span> <span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</span> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-comp_rev"><a href="#val-comp_rev" class="anchor"></a><code><span class="keyword">val</span> comp_rev : <a href="../../../InferIR/InferIR/Binop/index.html#type-t">InferIR.Binop.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Binop/index.html#type-t">InferIR.Binop.t</a></code></dt><dt class="spec value" id="val-comp_not"><a href="#val-comp_not" class="anchor"></a><code><span class="keyword">val</span> comp_not : <a href="../../../InferIR/InferIR/Binop/index.html#type-t">InferIR.Binop.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Binop/index.html#type-t">InferIR.Binop.t</a></code></dt><dt class="spec value" id="val-must_alias_cmp"><a href="#val-must_alias_cmp" class="anchor"></a><code><span class="keyword">val</span> must_alias_cmp : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-set_array_stride"><a href="#val-set_array_stride" class="anchor"></a><code><span class="keyword">val</span> set_array_stride : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval"><a href="#val-eval" class="anchor"></a><code><span class="keyword">val</span> eval : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval_lindex"><a href="#val-eval_lindex" class="anchor"></a><code><span class="keyword">val</span> eval_lindex : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval_unop"><a href="#val-eval_unop" class="anchor"></a><code><span class="keyword">val</span> eval_unop : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Unop/index.html#type-t">InferIR.Unop.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval_binop"><a href="#val-eval_binop" class="anchor"></a><code><span class="keyword">val</span> eval_binop : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Binop/index.html#type-t">InferIR.Binop.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval_locs"><a href="#val-eval_locs" class="anchor"></a><code><span class="keyword">val</span> eval_locs : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../AbsLoc/PowLoc/index.html#type-t">AbsLoc.PowLoc.t</a></code></dt><dd><p><code>eval_locs exp mem</code> is like <code>eval exp mem |&gt; Val.get_all_locs</code> but takes some shortcuts to avoid computing useless and/or problematic intermediate values</p></dd></dl><dl><dt class="spec value" id="val-eval_arr"><a href="#val-eval_arr" class="anchor"></a><code><span class="keyword">val</span> eval_arr : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-is_stack_exp"><a href="#val-is_stack_exp" class="anchor"></a><code><span class="keyword">val</span> is_stack_exp : <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> bool</code></dt></dl><div class="spec module" id="module-ParamBindings"><a href="#module-ParamBindings" class="anchor"></a><code><span class="keyword">module</span> <a href="ParamBindings/index.html">ParamBindings</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec type" id="type-eval_mode"><a href="#type-eval_mode" class="anchor"></a><code><span class="keyword">type</span> eval_mode</code><code> = </code><table class="variant"><tr id="type-eval_mode.EvalNormal" class="anchored"><td class="def constructor"><a href="#type-eval_mode.EvalNormal" class="anchor"></a><code>| </code><code><span class="constructor">EvalNormal</span></code></td></tr><tr id="type-eval_mode.EvalPOCond" class="anchored"><td class="def constructor"><a href="#type-eval_mode.EvalPOCond" class="anchor"></a><code>| </code><code><span class="constructor">EvalPOCond</span></code></td></tr><tr id="type-eval_mode.EvalPOReachability" class="anchored"><td class="def constructor"><a href="#type-eval_mode.EvalPOReachability" class="anchor"></a><code>| </code><code><span class="constructor">EvalPOReachability</span></code></td></tr></table></dt></dl><dl><dt class="spec value" id="val-eval_sympath_modeled_partial"><a href="#val-eval_sympath_modeled_partial" class="anchor"></a><code><span class="keyword">val</span> eval_sympath_modeled_partial : <span>mode:<a href="index.html#type-eval_mode">eval_mode</a></span> <span>&#45;&gt;</span> <a href="../Symb/SymbolPath/index.html#type-partial">Symb.SymbolPath.partial</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval_sympath_partial"><a href="#val-eval_sympath_partial" class="anchor"></a><code><span class="keyword">val</span> eval_sympath_partial : <span>mode:<a href="index.html#type-eval_mode">eval_mode</a></span> <span>&#45;&gt;</span> <span><a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> <a href="ParamBindings/index.html#type-t">ParamBindings.t</a></span> <span>&#45;&gt;</span> <a href="../Symb/SymbolPath/index.html#type-partial">Symb.SymbolPath.partial</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t0">BufferOverrunDomain.Mem.t0</a></span> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a></code></dt><dt class="spec value" id="val-eval_locpath"><a href="#val-eval_locpath" class="anchor"></a><code><span class="keyword">val</span> eval_locpath : <span>mode:<a href="index.html#type-eval_mode">eval_mode</a></span> <span>&#45;&gt;</span> <span><a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> <a href="ParamBindings/index.html#type-t">ParamBindings.t</a></span> <span>&#45;&gt;</span> <a href="../Symb/SymbolPath/index.html#type-partial">Symb.SymbolPath.partial</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t0">BufferOverrunDomain.Mem.t0</a></span> <span>&#45;&gt;</span> <a href="../AbsLoc/PowLoc/index.html#type-t">AbsLoc.PowLoc.t</a></code></dt><dt class="spec value" id="val-eval_sympath"><a href="#val-eval_sympath" class="anchor"></a><code><span class="keyword">val</span> eval_sympath : <span>mode:<a href="index.html#type-eval_mode">eval_mode</a></span> <span>&#45;&gt;</span> <span><a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> <a href="ParamBindings/index.html#type-t">ParamBindings.t</a></span> <span>&#45;&gt;</span> <a href="../Symb/SymbolPath/index.html#type-t">Symb.SymbolPath.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t0">BufferOverrunDomain.Mem.t0</a></span> <span>&#45;&gt;</span> <a href="../Itv/index.html#type-t">Itv.t</a> * <a href="../../InferModules__BufferOverrunTrace/Set/index.html#type-t">InferModules__BufferOverrunDomain.TraceSet.t</a></code></dt><dt class="spec value" id="val-mk_eval_sym_trace"><a href="#val-mk_eval_sym_trace" class="anchor"></a><code><span class="keyword">val</span> mk_eval_sym_trace : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <span><span>(<a href="ParamBindings/index.html#type-key">ParamBindings.key</a> * <span class="type-var">'a</span>)</span> list</span> <span>&#45;&gt;</span> <span><span>(<a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> * <span class="type-var">'b</span>)</span> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t</span> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <span>mode:<a href="index.html#type-eval_mode">eval_mode</a></span> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/index.html#type-eval_sym_trace">BufferOverrunDomain.eval_sym_trace</a></code></dt><dt class="spec value" id="val-mk_eval_sym"><a href="#val-mk_eval_sym" class="anchor"></a><code><span class="keyword">val</span> mk_eval_sym : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <span><span>(<a href="ParamBindings/index.html#type-key">ParamBindings.key</a> * <span class="type-var">'a</span>)</span> list</span> <span>&#45;&gt;</span> <span><span>(<a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> * <span class="type-var">'b</span>)</span> <a href="../../../InferStdlib/InferStdlib/index.html#module-IStd">InferStdlib.IStd</a>.List.t</span> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../Bounds/Bound/index.html#type-eval_sym">Bounds.Bound.eval_sym</a></code></dt><dt class="spec value" id="val-get_sym_f"><a href="#val-get_sym_f" class="anchor"></a><code><span class="keyword">val</span> get_sym_f : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../InferModules__BufferOverrunDomainRelation/Sym/index.html#type-t">InferModules__BufferOverrunDomain.Relation.Sym.t</a></code></dt><dt class="spec value" id="val-get_offset_sym_f"><a href="#val-get_offset_sym_f" class="anchor"></a><code><span class="keyword">val</span> get_offset_sym_f : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../InferModules__BufferOverrunDomainRelation/Sym/index.html#type-t">InferModules__BufferOverrunDomain.Relation.Sym.t</a></code></dt><dt class="spec value" id="val-get_size_sym_f"><a href="#val-get_size_sym_f" class="anchor"></a><code><span class="keyword">val</span> get_size_sym_f : <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> <span>&#45;&gt;</span> <a href="../../InferModules__BufferOverrunDomainRelation/Sym/index.html#type-t">InferModules__BufferOverrunDomain.Relation.Sym.t</a></code></dt></dl><div class="spec module" id="module-Prune"><a href="#module-Prune" class="anchor"></a><code><span class="keyword">module</span> <a href="Prune/index.html">Prune</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec value" id="val-get_matching_pairs"><a href="#val-get_matching_pairs" class="anchor"></a><code><span class="keyword">val</span> get_matching_pairs : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> <span>&#45;&gt;</span> <span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</span> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t0">BufferOverrunDomain.Mem.t0</a></span> <span>&#45;&gt;</span> <span><span>(<a href="../../InferModules__BufferOverrunDomainRelation/Var/index.html#type-t">BufferOverrunDomain.Relation.Var.t</a> * <span><a href="../../InferModules__BufferOverrunDomainRelation/SymExp/index.html#type-t">BufferOverrunDomain.Relation.SymExp.t</a> option</span>)</span> list</span></code></dt><dt class="spec value" id="val-subst_map_of_rel_pairs"><a href="#val-subst_map_of_rel_pairs" class="anchor"></a><code><span class="keyword">val</span> subst_map_of_rel_pairs : <span><span>(<a href="../../InferModules__BufferOverrunDomainRelation/Var/index.html#type-t">BufferOverrunDomain.Relation.Var.t</a> * <span><a href="../../InferModules__BufferOverrunDomainRelation/SymExp/index.html#type-t">BufferOverrunDomain.Relation.SymExp.t</a> option</span>)</span> list</span> <span>&#45;&gt;</span> <a href="../../InferModules__BufferOverrunDomainRelation/SubstMap/index.html#type-t">BufferOverrunDomain.Relation.SubstMap.t</a></code></dt><dt class="spec value" id="val-list_fold2_def"><a href="#val-list_fold2_def" class="anchor"></a><code><span class="keyword">val</span> list_fold2_def : <span>default:<span>(<a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> * <span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</span>)</span></span> <span>&#45;&gt;</span> <span>f:<span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span>(<a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> * <span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> list</span> <span>&#45;&gt;</span> <span><span>(<a href="../BufferOverrunDomain/Val/index.html#type-t">BufferOverrunDomain.Val.t</a> * <span><a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> option</span>)</span> list</span> <span>&#45;&gt;</span> <span>init:<span class="type-var">'b</span></span> <span>&#45;&gt;</span> <span class="type-var">'b</span></code></dt><dt class="spec value" id="val-get_subst_map"><a href="#val-get_subst_map" class="anchor"></a><code><span class="keyword">val</span> get_subst_map : <a href="../../../InferIR/InferIR/Tenv/index.html#type-t">InferIR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../../InferIR/InferIR/Typ/IntegerWidths/index.html#type-t">InferIR.Typ.IntegerWidths.t</a> <span>&#45;&gt;</span> <span><span>(<a href="../../../InferIR/InferIR/Pvar/index.html#type-t">InferIR.Pvar.t</a> * <a href="../../../InferIR/InferIR/Typ/index.html#type-t">InferIR.Typ.t</a>)</span> list</span> <span>&#45;&gt;</span> <span><span>(<a href="../../../InferIR/InferIR/Exp/index.html#type-t">InferIR.Exp.t</a> * <span class="type-var">'a</span>)</span> list</span> <span>&#45;&gt;</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t">BufferOverrunDomain.Mem.t</a> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="../BufferOverrunDomain/Mem/index.html#type-t0">BufferOverrunDomain.Mem.t0</a></span> <span>&#45;&gt;</span> <a href="../../InferModules__BufferOverrunDomainRelation/SubstMap/index.html#type-t">BufferOverrunDomain.Relation.SubstMap.t</a></code></dt></dl></div></body></html>