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
11 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>Pulselib__PulseArithmetic (infer.Pulselib__PulseArithmetic)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><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; Pulselib__PulseArithmetic</nav><h1>Module <code>Pulselib__PulseArithmetic</code></h1></header><div class="spec module" id="module-AbductiveDomain"><a href="#module-AbductiveDomain" class="anchor"></a><code><span class="keyword">module</span> AbductiveDomain = <a href="../Pulselib/index.html#module-PulseAbductiveDomain">Pulselib.PulseAbductiveDomain</a></code></div><div class="spec module" id="module-AccessResult"><a href="#module-AccessResult" class="anchor"></a><code><span class="keyword">module</span> AccessResult = <a href="../Pulselib/index.html#module-PulseAccessResult">Pulselib.PulseAccessResult</a></code></div><aside><p>Wrapper around <code>PathCondition</code> that operates on <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t"><code>AbductiveDomain.t</code></a>.</p></aside><dl><dt class="spec value" id="val-and_nonnegative"><a href="#val-and_nonnegative" class="anchor"></a><code><span class="keyword">val</span> and_nonnegative : <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt><dt class="spec value" id="val-and_positive"><a href="#val-and_positive" class="anchor"></a><code><span class="keyword">val</span> and_positive : <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt><dt class="spec value" id="val-and_eq_int"><a href="#val-and_eq_int" class="anchor"></a><code><span class="keyword">val</span> and_eq_int : <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../IR/IntLit/index.html#type-t">IR.IntLit.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt></dl><dl><dt class="spec type" id="type-operand"><a href="#type-operand" class="anchor"></a><code><span class="keyword">type</span> operand</code><code> = <a href="../Pulselib/PulsePathCondition/index.html#type-operand">Pulselib.PulseBasicInterface.PathCondition.operand</a></code><code> = </code><table class="variant"><tr id="type-operand.LiteralOperand" class="anchored"><td class="def constructor"><a href="#type-operand.LiteralOperand" class="anchor"></a><code>| </code><code><span class="constructor">LiteralOperand</span> <span class="keyword">of</span> <a href="../IR/IntLit/index.html#type-t">IR.IntLit.t</a></code></td></tr><tr id="type-operand.AbstractValueOperand" class="anchored"><td class="def constructor"><a href="#type-operand.AbstractValueOperand" class="anchor"></a><code>| </code><code><span class="constructor">AbstractValueOperand</span> <span class="keyword">of</span> <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a></code></td></tr><tr id="type-operand.FunctionApplicationOperand" class="anchored"><td class="def constructor"><a href="#type-operand.FunctionApplicationOperand" class="anchor"></a><code>| </code><code><span class="constructor">FunctionApplicationOperand</span> <span class="keyword">of</span> </code><code>{</code><table class="record"><tr id="type-operand.f" class="anchored"><td class="def field"><a href="#type-operand.f" class="anchor"></a><code>f : <a href="../Pulselib/PulseFormula/index.html#type-function_symbol">Pulselib.PulseFormula.function_symbol</a>;</code></td></tr><tr id="type-operand.actuals" class="anchored"><td class="def field"><a href="#type-operand.actuals" class="anchor"></a><code>actuals : <span><a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> list</span>;</code></td></tr></table><code>}</code></td></tr></table></dt></dl><dl><dt class="spec value" id="val-and_equal"><a href="#val-and_equal" class="anchor"></a><code><span class="keyword">val</span> and_equal : <a href="index.html#type-operand">operand</a> <span>&#45;&gt;</span> <a href="index.html#type-operand">operand</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></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="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../IR/Binop/index.html#type-t">IR.Binop.t</a> <span>&#45;&gt;</span> <a href="index.html#type-operand">operand</a> <span>&#45;&gt;</span> <a href="index.html#type-operand">operand</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></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="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../IR/Unop/index.html#type-t">IR.Unop.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt><dt class="spec value" id="val-prune_binop"><a href="#val-prune_binop" class="anchor"></a><code><span class="keyword">val</span> prune_binop : <span>negated:bool</span> <span>&#45;&gt;</span> <a href="../IR/Binop/index.html#type-t">IR.Binop.t</a> <span>&#45;&gt;</span> <a href="index.html#type-operand">operand</a> <span>&#45;&gt;</span> <a href="index.html#type-operand">operand</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt><dt class="spec value" id="val-prune_eq_zero"><a href="#val-prune_eq_zero" class="anchor"></a><code><span class="keyword">val</span> prune_eq_zero : <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt><dd><p>helper function wrapping <code>prune_binop</code></p></dd></dl><dl><dt class="spec value" id="val-prune_positive"><a href="#val-prune_positive" class="anchor"></a><code><span class="keyword">val</span> prune_positive : <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt><dd><p>helper function wrapping <code>prune_binop</code></p></dd></dl><dl><dt class="spec value" id="val-is_known_zero"><a href="#val-is_known_zero" class="anchor"></a><code><span class="keyword">val</span> is_known_zero : <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-is_unsat_cheap"><a href="#val-is_unsat_cheap" class="anchor"></a><code><span class="keyword">val</span> is_unsat_cheap : <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-has_no_assumptions"><a href="#val-has_no_assumptions" class="anchor"></a><code><span class="keyword">val</span> has_no_assumptions : <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-and_equal_instanceof"><a href="#val-and_equal_instanceof" class="anchor"></a><code><span class="keyword">val</span> and_equal_instanceof : <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbstractValue/index.html#type-t">Pulselib.PulseBasicInterface.AbstractValue.t</a> <span>&#45;&gt;</span> <a href="../IR/Typ/index.html#type-t">IR.Typ.t</a> <span>&#45;&gt;</span> <a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <span>&#45;&gt;</span> <span><a href="../Pulselib/PulseAbductiveDomain/index.html#type-t">AbductiveDomain.t</a> <a href="../Pulselib/PulseAccessResult/index.html#type-t">AccessResult.t</a></span></code></dt></dl></div></body></html>