<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Biabduction__SymExec (infer.Biabduction__SymExec)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.2"/><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; Biabduction__SymExec</nav><h1>Module <code>Biabduction__SymExec</code></h1></header><aside><p>Symbolic Execution</p></aside><dl><dt class="spec value" id="val-declare_locals_and_ret"><a href="#val-declare_locals_and_ret" class="anchor"></a><code><span class="keyword">val</span> declare_locals_and_ret : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> <span>&#45;&gt;</span> <span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span></code></dt><dd><p>Symbolic execution of the declaration of locals and return value.</p></dd></dl><dl><dt class="spec value" id="val-node"><a href="#val-node" class="anchor"></a><code><span class="keyword">val</span> node : <span>(exn <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> <span><a href="../Biabduction/BiabductionSummary/index.html#type-t">Biabduction.BiabductionSummary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <a href="../Absint/ProcCfg/Exceptional/index.html#type-t">Absint.ProcCfg.Exceptional.t</a> <span>&#45;&gt;</span> <a href="../Absint__ProcCfg/DefaultNode/index.html#type-t">Absint.ProcCfg.Exceptional.Node.t</a> <span>&#45;&gt;</span> <a href="../Biabduction/Paths/PathSet/index.html#type-t">Biabduction.Paths.PathSet.t</a> <span>&#45;&gt;</span> <a href="../Biabduction/Paths/PathSet/index.html#type-t">Biabduction.Paths.PathSet.t</a></code></dt><dd><p>Symbolic execution of the instructions of a node, lifted to sets of propositions.</p></dd></dl><dl><dt class="spec value" id="val-instrs"><a href="#val-instrs" class="anchor"></a><code><span class="keyword">val</span> instrs : <span>?&#8288;mask_errors:bool</span> <span>&#45;&gt;</span> <span><a href="../Biabduction/BiabductionSummary/index.html#type-t">Biabduction.BiabductionSummary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <a href="../IR/Instrs/index.html#type-not_reversed_t">IR.Instrs.not_reversed_t</a> <span>&#45;&gt;</span> <span><span>(<span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> * <a href="../Biabduction/Paths/Path/index.html#type-t">Biabduction.Paths.Path.t</a>)</span> list</span> <span>&#45;&gt;</span> <span><span>(<span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> * <a href="../Biabduction/Paths/Path/index.html#type-t">Biabduction.Paths.Path.t</a>)</span> list</span></code></dt><dd><p>Symbolic execution of a sequence of instructions. If errors occur and <code>mask_errors</code> is true, just treat as skip.</p></dd></dl><dl><dt class="spec value" id="val-diverge"><a href="#val-diverge" class="anchor"></a><code><span class="keyword">val</span> diverge : <span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../Biabduction/Paths/Path/index.html#type-t">Biabduction.Paths.Path.t</a> <span>&#45;&gt;</span> <span><span>(<span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> * <a href="../Biabduction/Paths/Path/index.html#type-t">Biabduction.Paths.Path.t</a>)</span> list</span></code></dt><dd><p>Symbolic execution of the divergent pure computation.</p></dd></dl><dl><dt class="spec value" id="val-proc_call"><a href="#val-proc_call" class="anchor"></a><code><span class="keyword">val</span> proc_call : <span>(<a href="../IR/Procdesc/index.html#type-t">IR.Procdesc.t</a> * <a href="../Biabduction/BiabductionSummary/index.html#type-t">Biabduction.BiabductionSummary.t</a>)</span> <span>&#45;&gt;</span> <a href="../Biabduction/Builtin/index.html#type-t">Biabduction.Builtin.t</a></code></dt><dt class="spec value" id="val-unknown_or_scan_call"><a href="#val-unknown_or_scan_call" class="anchor"></a><code><span class="keyword">val</span> unknown_or_scan_call : <span>is_scan:bool</span> <span>&#45;&gt;</span> <span>reason:string</span> <span>&#45;&gt;</span> <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a> <span>&#45;&gt;</span> <a href="../IR/Annot/Item/index.html#type-t">IR.Annot.Item.t</a> <span>&#45;&gt;</span> <a href="../Biabduction/Builtin/index.html#type-t">Biabduction.Builtin.t</a></code></dt><dt class="spec value" id="val-check_variadic_sentinel"><a href="#val-check_variadic_sentinel" class="anchor"></a><code><span class="keyword">val</span> check_variadic_sentinel : <span>?&#8288;fails_on_nil:bool</span> <span>&#45;&gt;</span> int <span>&#45;&gt;</span> <span>(int * int)</span> <span>&#45;&gt;</span> <a href="../Biabduction/Builtin/index.html#type-t">Biabduction.Builtin.t</a></code></dt><dt class="spec value" id="val-check_arith_norm_exp"><a href="#val-check_arith_norm_exp" class="anchor"></a><code><span class="keyword">val</span> check_arith_norm_exp : <span><a href="../Biabduction/BiabductionSummary/index.html#type-t">Biabduction.BiabductionSummary.t</a> <a href="../Absint/InterproceduralAnalysis/index.html#type-t">Absint.InterproceduralAnalysis.t</a></span> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> * <span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span></code></dt><dd><p>Check for arithmetic problems and normalize an expression.</p></dd></dl><dl><dt class="spec value" id="val-prune"><a href="#val-prune" class="anchor"></a><code><span class="keyword">val</span> prune : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <span>positive:bool</span> <span>&#45;&gt;</span> <a href="../IR/Exp/index.html#type-t">IR.Exp.t</a> <span>&#45;&gt;</span> <span><a href="../Biabduction/Prop/index.html#type-normal">Biabduction.Prop.normal</a> <a href="../Biabduction/Prop/index.html#type-t">Biabduction.Prop.t</a></span> <span>&#45;&gt;</span> <a href="../Biabduction/Propset/index.html#type-t">Biabduction.Propset.t</a></code></dt></dl></div></body></html>