mirror of
https://github.com/c-cube/sidekick.git
synced 2026-01-21 16:56:41 -05:00
deploy: 4fd8afb129
This commit is contained in:
parent
48edf72ae0
commit
16ab84e1c5
378 changed files with 570 additions and 378 deletions
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Atom)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » Atom</nav><h1>Module <code>S.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Atom)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » Atom</nav><h1>Module <code>S.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4><p>Atoms are the SAT solver's version of our boolean literals (they may have a different representation).</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Lit)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » Lit</nav><h1>Module <code>S.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Lit)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » Lit</nav><h1>Module <code>S.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Model)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » Model</nav><h1>Module <code>S.Model</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Model)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » Model</nav><h1>Module <code>S.Model</code></h1><p>Models</p><p>A model can be produced when the solver is found to be in a satisfiable state after a call to <a href="../index.html#val-solve"><code>solve</code></a>.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.Actions)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">Make</a> » <a href="../../../../index.html">1-A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.Actions)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">Make</a> » <a href="../../../../index.html">1-A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../../../../../sidekick/Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.Expl)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">Make</a> » <a href="../../../../index.html">1-A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.CC.Expl)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">Make</a> » <a href="../../../../index.html">1-A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.Simplify)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">Make</a> » <a href="../../../index.html">1-A</a> » <a href="../../index.html">S</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks.</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.Solver_internal.Simplify)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">Make</a> » <a href="../../../index.html">1-A</a> » <a href="../../index.html">S</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1><p>Simplify terms</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p><p>A simple example could be a hook that takes a term <code>t</code>, and if <code>t</code> is <code>app "+" (const x) (const y)</code> where <code>x</code> and <code>y</code> are number, returns <code>Some (const (x+y))</code>, and <code>None</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the term.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.T.Fun)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">Make</a> » <a href="../../../index.html">1-A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.T.Fun)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">Make</a> » <a href="../../../index.html">1-A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.T.Ty)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">Make</a> » <a href="../../../index.html">1-A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.T.Ty)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">Make</a> » <a href="../../../index.html">1-A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.T)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » T</nav><h1>Module <code>S.T</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.T)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » T</nav><h1>Module <code>S.T</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.THEORY)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » THEORY</nav><h1>Module type <code>S.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p>Pop backtracking levels, restoring the theory to its former state</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-arith.Sidekick_arith_lra.Make.1-A.S.THEORY)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">Make</a> » <a href="../../index.html">1-A</a> » <a href="../index.html">S</a> » THEORY</nav><h1>Module type <code>S.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory (ideally, unique and short)</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p><p>Called once for every solver this theory is added to.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state <b>equivalent</b> to what it was just before <code>push_level</code>.</p><p>it does not have to be exactly the same state, it just needs to be equivalent.</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p><code>pop_levels theory n</code> pops <code>n</code> backtracking levels, restoring <code>theory</code> to its state before calling <code>push_level</code> n times.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-arith.Sidekick_arith_lra.ARG.S.Atom)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » Atom</nav><h1>Module <code>S.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-arith.Sidekick_arith_lra.ARG.S.Atom)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » Atom</nav><h1>Module <code>S.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4><p>Atoms are the SAT solver's version of our boolean literals (they may have a different representation).</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-arith.Sidekick_arith_lra.ARG.S.Lit)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » Lit</nav><h1>Module <code>S.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-arith.Sidekick_arith_lra.ARG.S.Lit)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » Lit</nav><h1>Module <code>S.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-arith.Sidekick_arith_lra.ARG.S.Model)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » Model</nav><h1>Module <code>S.Model</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-arith.Sidekick_arith_lra.ARG.S.Model)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » Model</nav><h1>Module <code>S.Model</code></h1><p>Models</p><p>A model can be produced when the solver is found to be in a satisfiable state after a call to <a href="../index.html#val-solve"><code>solve</code></a>.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.Actions)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">ARG</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.Actions)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">ARG</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../../../../sidekick/Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.Expl)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">ARG</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.Expl)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">ARG</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.N)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">ARG</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)?</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.CC.N)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">ARG</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An equivalent class, containing terms that are proved to be equal.</p><p>A value of type <code>t</code> points to a particular term, but see <a href="../index.html#val-find"><code>find</code></a> to get the representative of the class.</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)? See <a href="../index.html#val-find"><code>find</code></a> to get the root.</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Access the bit field</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.Simplify)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">ARG</a> » <a href="../../index.html">S</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks.</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-arith.Sidekick_arith_lra.ARG.S.Solver_internal.Simplify)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">ARG</a> » <a href="../../index.html">S</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1><p>Simplify terms</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p><p>A simple example could be a hook that takes a term <code>t</code>, and if <code>t</code> is <code>app "+" (const x) (const y)</code> where <code>x</code> and <code>y</code> are number, returns <code>Some (const (x+y))</code>, and <code>None</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the term.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_arith_lra.ARG.S.T.Fun)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">ARG</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_arith_lra.ARG.S.T.Fun)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">ARG</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_arith_lra.ARG.S.T.Ty)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">ARG</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_arith_lra.ARG.S.T.Ty)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">ARG</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-arith.Sidekick_arith_lra.ARG.S.T)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » T</nav><h1>Module <code>S.T</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-arith.Sidekick_arith_lra.ARG.S.T)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » T</nav><h1>Module <code>S.T</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-arith.Sidekick_arith_lra.ARG.S.THEORY)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » THEORY</nav><h1>Module type <code>S.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p>Pop backtracking levels, restoring the theory to its former state</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-arith.Sidekick_arith_lra.ARG.S.THEORY)</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">sidekick-arith</a> » <a href="../../../index.html">Sidekick_arith_lra</a> » <a href="../../index.html">ARG</a> » <a href="../index.html">S</a> » THEORY</nav><h1>Module type <code>S.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory (ideally, unique and short)</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p><p>Called once for every solver this theory is added to.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state <b>equivalent</b> to what it was just before <code>push_level</code>.</p><p>it does not have to be exactly the same state, it just needs to be equivalent.</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p><code>pop_levels theory n</code> pops <code>n</code> backtracking levels, restoring <code>theory</code> to its state before calling <code>push_level</code> n times.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-arith.Sidekick_arith_lra.S.A.S.Atom)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » Atom</nav><h1>Module <code>S.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-arith.Sidekick_arith_lra.S.A.S.Atom)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » Atom</nav><h1>Module <code>S.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4><p>Atoms are the SAT solver's version of our boolean literals (they may have a different representation).</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-arith.Sidekick_arith_lra.S.A.S.Lit)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » Lit</nav><h1>Module <code>S.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-arith.Sidekick_arith_lra.S.A.S.Lit)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » Lit</nav><h1>Module <code>S.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-arith.Sidekick_arith_lra.S.A.S.Model)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » Model</nav><h1>Module <code>S.Model</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-arith.Sidekick_arith_lra.S.A.S.Model)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » Model</nav><h1>Module <code>S.Model</code></h1><p>Models</p><p>A model can be produced when the solver is found to be in a satisfiable state after a call to <a href="../index.html#val-solve"><code>solve</code></a>.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.Actions)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">S</a> » <a href="../../../../index.html">A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.Actions)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">S</a> » <a href="../../../../index.html">A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../../../../../sidekick/Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.Expl)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">S</a> » <a href="../../../../index.html">A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.Expl)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">S</a> » <a href="../../../../index.html">A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.N)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">S</a> » <a href="../../../../index.html">A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)?</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.CC.N)</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">sidekick-arith</a> » <a href="../../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../../index.html">S</a> » <a href="../../../../index.html">A</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An equivalent class, containing terms that are proved to be equal.</p><p>A value of type <code>t</code> points to a particular term, but see <a href="../index.html#val-find"><code>find</code></a> to get the representative of the class.</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)? See <a href="../index.html#val-find"><code>find</code></a> to get the root.</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Access the bit field</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.Simplify)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">S</a> » <a href="../../../index.html">A</a> » <a href="../../index.html">S</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks.</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-arith.Sidekick_arith_lra.S.A.S.Solver_internal.Simplify)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">S</a> » <a href="../../../index.html">A</a> » <a href="../../index.html">S</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1><p>Simplify terms</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p><p>A simple example could be a hook that takes a term <code>t</code>, and if <code>t</code> is <code>app "+" (const x) (const y)</code> where <code>x</code> and <code>y</code> are number, returns <code>Some (const (x+y))</code>, and <code>None</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the term.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_arith_lra.S.A.S.T.Fun)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">S</a> » <a href="../../../index.html">A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_arith_lra.S.A.S.T.Fun)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">S</a> » <a href="../../../index.html">A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_arith_lra.S.A.S.T.Ty)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">S</a> » <a href="../../../index.html">A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_arith_lra.S.A.S.T.Ty)</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">sidekick-arith</a> » <a href="../../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../../index.html">S</a> » <a href="../../../index.html">A</a> » <a href="../../index.html">S</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-arith.Sidekick_arith_lra.S.A.S.T)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » T</nav><h1>Module <code>S.T</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-arith.Sidekick_arith_lra.S.A.S.T)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » T</nav><h1>Module <code>S.T</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-arith.Sidekick_arith_lra.S.A.S.THEORY)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » THEORY</nav><h1>Module type <code>S.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p>Pop backtracking levels, restoring the theory to its former state</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-arith.Sidekick_arith_lra.S.A.S.THEORY)</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">sidekick-arith</a> » <a href="../../../../index.html">Sidekick_arith_lra</a> » <a href="../../../index.html">S</a> » <a href="../../index.html">A</a> » <a href="../index.html">S</a> » THEORY</nav><h1>Module type <code>S.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory (ideally, unique and short)</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p><p>Called once for every solver this theory is added to.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state <b>equivalent</b> to what it was just before <code>push_level</code>.</p><p>it does not have to be exactly the same state, it just needs to be equivalent.</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p><code>pop_levels theory n</code> pops <code>n</code> backtracking levels, restoring <code>theory</code> to its state before calling <code>push_level</code> n times.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplex_intf (sidekick-arith.Sidekick_arith_lra__.Simplex_intf)</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">sidekick-arith</a> » <a href="../index.html">Sidekick_arith_lra__</a> » Simplex_intf</nav><h1>Module <code>Sidekick_arith_lra__.Simplex_intf</code></h1><nav class="toc"><ul><li><a href="#modular-and-incremental-implementation-of-the-general-simplex">Modular and incremental implementation of the general simplex</a></li></ul></nav></header><section><header><h2 id="modular-and-incremental-implementation-of-the-general-simplex"><a href="#modular-and-incremental-implementation-of-the-general-simplex" class="anchor"></a>Modular and incremental implementation of the general simplex</h2><p>.</p></header><aside><p>The simplex is used as a decision procedure for linear rational arithmetic problems.</p><p>More information can be found on the particular flavor of this implementation at https://gbury.eu/public/papers/stage-m2.pdf</p></aside><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S/index.html">S</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module-type" id="module-type-S_FULL"><a href="#module-type-S_FULL" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S_FULL/index.html">S_FULL</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplex_intf (sidekick-arith.Sidekick_arith_lra__.Simplex_intf)</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">sidekick-arith</a> » <a href="../index.html">Sidekick_arith_lra__</a> » Simplex_intf</nav><h1>Module <code>Sidekick_arith_lra__.Simplex_intf</code></h1><nav class="toc"><ul><li><a href="#modular-and-incremental-implementation-of-the-general-simplex">Modular and incremental implementation of the general simplex</a></li></ul></nav></header><section><header><h2 id="modular-and-incremental-implementation-of-the-general-simplex"><a href="#modular-and-incremental-implementation-of-the-general-simplex" class="anchor"></a>Modular and incremental implementation of the general simplex</h2></header><aside><p>The simplex is used as a decision procedure for linear rational arithmetic problems.</p><p>More information can be found on the particular flavor of this implementation at https://gbury.eu/public/papers/stage-m2.pdf</p></aside><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S/index.html">S</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module-type" id="module-type-S_FULL"><a href="#module-type-S_FULL" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S_FULL/index.html">S_FULL</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sidekick_arith_lra__Simplex_intf (sidekick-arith.Sidekick_arith_lra__Simplex_intf)</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">sidekick-arith</a> » Sidekick_arith_lra__Simplex_intf</nav><h1>Module <code>Sidekick_arith_lra__Simplex_intf</code></h1><h2 id="modular-and-incremental-implementation-of-the-general-simplex"><a href="#modular-and-incremental-implementation-of-the-general-simplex" class="anchor"></a>Modular and incremental implementation of the general simplex</h2><p>.</p></header><aside><p>The simplex is used as a decision procedure for linear rational arithmetic problems.</p><p>More information can be found on the particular flavor of this implementation at https://gbury.eu/public/papers/stage-m2.pdf</p></aside><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S/index.html">S</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module-type" id="module-type-S_FULL"><a href="#module-type-S_FULL" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S_FULL/index.html">S_FULL</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sidekick_arith_lra__Simplex_intf (sidekick-arith.Sidekick_arith_lra__Simplex_intf)</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">sidekick-arith</a> » Sidekick_arith_lra__Simplex_intf</nav><h1>Module <code>Sidekick_arith_lra__Simplex_intf</code></h1><h2 id="modular-and-incremental-implementation-of-the-general-simplex"><a href="#modular-and-incremental-implementation-of-the-general-simplex" class="anchor"></a>Modular and incremental implementation of the general simplex</h2></header><aside><p>The simplex is used as a decision procedure for linear rational arithmetic problems.</p><p>More information can be found on the particular flavor of this implementation at https://gbury.eu/public/papers/stage-m2.pdf</p></aside><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S/index.html">S</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module-type" id="module-type-S_FULL"><a href="#module-type-S_FULL" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S_FULL/index.html">S_FULL</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_base_term.Arg.Fun)</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">sidekick-arith</a> » <a href="../../index.html">Sidekick_base_term</a> » <a href="../index.html">Arg</a> » Fun</nav><h1>Module <code>Arg.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../Sidekick_base_term__Base_types/Fun/index.html#type-t">Fun.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-arith.Sidekick_base_term.Arg.Fun)</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">sidekick-arith</a> » <a href="../../index.html">Sidekick_base_term</a> » <a href="../index.html">Arg</a> » Fun</nav><h1>Module <code>Arg.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../Sidekick_base_term__Base_types/Fun/index.html#type-t">Fun.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_base_term.Arg.Ty)</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">sidekick-arith</a> » <a href="../../index.html">Sidekick_base_term</a> » <a href="../index.html">Arg</a> » Ty</nav><h1>Module <code>Arg.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../Sidekick_base_term__Base_types/Ty/index.html#type-t">Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-arith.Sidekick_base_term.Arg.Ty)</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">sidekick-arith</a> » <a href="../../index.html">Sidekick_base_term</a> » <a href="../index.html">Arg</a> » Ty</nav><h1>Module <code>Arg.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../Sidekick_base_term__Base_types/Ty/index.html#type-t">Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Arg (sidekick-arith.Sidekick_base_term.Arg)</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">sidekick-arith</a> » <a href="../index.html">Sidekick_base_term</a> » Arg</nav><h1>Module <code>Sidekick_base_term.Arg</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Fun/index.html#type-t">t</a> = <a href="../../Sidekick_base_term__Base_types/Fun/index.html#type-t">Fun.t</a></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../Sidekick_base_term__Base_types/Ty/index.html#type-t">Ty.t</a></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../Sidekick_base_term__Base_types/Term/index.html#type-t">Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../Sidekick_base_term__Base_types/Term/index.html#type-state">Term.state</a></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Arg (sidekick-arith.Sidekick_base_term.Arg)</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">sidekick-arith</a> » <a href="../index.html">Sidekick_base_term</a> » Arg</nav><h1>Module <code>Sidekick_base_term.Arg</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Fun/index.html#type-t">t</a> = <a href="../../Sidekick_base_term__Base_types/Fun/index.html#type-t">Fun.t</a></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../Sidekick_base_term__Base_types/Ty/index.html#type-t">Ty.t</a></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../Sidekick_base_term__Base_types/Term/index.html#type-t">Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../Sidekick_base_term__Base_types/Term/index.html#type-state">Term.state</a></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-bin.Sidekick_smtlib.Process.Solver.Atom)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Atom</nav><h1>Module <code>Solver.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-bin.Sidekick_smtlib.Process.Solver.Atom)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Atom</nav><h1>Module <code>Solver.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4><p>Atoms are the SAT solver's version of our boolean literals (they may have a different representation).</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-bin.Sidekick_smtlib.Process.Solver.Lit)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Lit</nav><h1>Module <code>Solver.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-bin.Sidekick_smtlib.Process.Solver.Lit)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Lit</nav><h1>Module <code>Solver.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-bin.Sidekick_smtlib.Process.Solver.Model)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Model</nav><h1>Module <code>Solver.Model</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-bin.Sidekick_smtlib.Process.Solver.Model)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Model</nav><h1>Module <code>Solver.Model</code></h1><p>Models</p><p>A model can be produced when the solver is found to be in a satisfiable state after a call to <a href="../index.html#val-solve"><code>solve</code></a>.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.CC.Actions)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.CC.Actions)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../../../../sidekick/Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.CC.Expl)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.CC.Expl)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.CC.N)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)?</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.CC.N)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An equivalent class, containing terms that are proved to be equal.</p><p>A value of type <code>t</code> points to a particular term, but see <a href="../index.html#val-find"><code>find</code></a> to get the representative of the class.</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)? See <a href="../index.html#val-find"><code>find</code></a> to get the root.</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Access the bit field</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.Simplify)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks.</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-bin.Sidekick_smtlib.Process.Solver.Solver_internal.Simplify)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1><p>Simplify terms</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p><p>A simple example could be a hook that takes a term <code>t</code>, and if <code>t</code> is <code>app "+" (const x) (const y)</code> where <code>x</code> and <code>y</code> are number, returns <code>Some (const (x+y))</code>, and <code>None</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the term.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-bin.Sidekick_smtlib.Process.Solver.T.Fun)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-bin.Sidekick_smtlib.Process.Solver.T.Fun)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-bin.Sidekick_smtlib.Process.Solver.T.Ty)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-bin.Sidekick_smtlib.Process.Solver.T.Ty)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-bin.Sidekick_smtlib.Process.Solver.T)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » T</nav><h1>Module <code>Solver.T</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Ty/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-t">Sidekick_base_term.Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-state">Sidekick_base_term.Term.state</a></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-bin.Sidekick_smtlib.Process.Solver.T)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » T</nav><h1>Module <code>Solver.T</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Ty/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-t">Sidekick_base_term.Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-state">Sidekick_base_term.Term.state</a></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-bin.Sidekick_smtlib.Process.Solver.THEORY)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » THEORY</nav><h1>Module type <code>Solver.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p>Pop backtracking levels, restoring the theory to its former state</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-bin.Sidekick_smtlib.Process.Solver.THEORY)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » THEORY</nav><h1>Module type <code>Solver.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory (ideally, unique and short)</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p><p>Called once for every solver this theory is added to.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state <b>equivalent</b> to what it was just before <code>push_level</code>.</p><p>it does not have to be exactly the same state, it just needs to be equivalent.</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p><code>pop_levels theory n</code> pops <code>n</code> backtracking levels, restoring <code>theory</code> to its state before calling <code>push_level</code> n times.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-bin.Sidekick_smtlib__.Process.Solver.Atom)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Atom</nav><h1>Module <code>Solver.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-bin.Sidekick_smtlib__.Process.Solver.Atom)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Atom</nav><h1>Module <code>Solver.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4><p>Atoms are the SAT solver's version of our boolean literals (they may have a different representation).</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-bin.Sidekick_smtlib__.Process.Solver.Lit)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Lit</nav><h1>Module <code>Solver.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-bin.Sidekick_smtlib__.Process.Solver.Lit)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Lit</nav><h1>Module <code>Solver.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-bin.Sidekick_smtlib__.Process.Solver.Model)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Model</nav><h1>Module <code>Solver.Model</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-bin.Sidekick_smtlib__.Process.Solver.Model)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » Model</nav><h1>Module <code>Solver.Model</code></h1><p>Models</p><p>A model can be produced when the solver is found to be in a satisfiable state after a call to <a href="../index.html#val-solve"><code>solve</code></a>.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.CC.Actions)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.CC.Actions)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../../../../sidekick/Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.CC.Expl)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.CC.Expl)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.CC.N)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)?</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.CC.N)</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">sidekick-bin</a> » <a href="../../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../../index.html">Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An equivalent class, containing terms that are proved to be equal.</p><p>A value of type <code>t</code> points to a particular term, but see <a href="../index.html#val-find"><code>find</code></a> to get the representative of the class.</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)? See <a href="../index.html#val-find"><code>find</code></a> to get the root.</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Access the bit field</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.Simplify)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks.</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-bin.Sidekick_smtlib__.Process.Solver.Solver_internal.Simplify)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1><p>Simplify terms</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p><p>A simple example could be a hook that takes a term <code>t</code>, and if <code>t</code> is <code>app "+" (const x) (const y)</code> where <code>x</code> and <code>y</code> are number, returns <code>Some (const (x+y))</code>, and <code>None</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the term.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-bin.Sidekick_smtlib__.Process.Solver.T.Fun)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-bin.Sidekick_smtlib__.Process.Solver.T.Fun)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-bin.Sidekick_smtlib__.Process.Solver.T.Ty)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-bin.Sidekick_smtlib__.Process.Solver.T.Ty)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__</a> » <a href="../../../index.html">Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = <a href="../../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-bin.Sidekick_smtlib__.Process.Solver.T)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » T</nav><h1>Module <code>Solver.T</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Ty/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-t">Sidekick_base_term.Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-state">Sidekick_base_term.Term.state</a></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-bin.Sidekick_smtlib__.Process.Solver.T)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » T</nav><h1>Module <code>Solver.T</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Ty/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-t">Sidekick_base_term.Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-state">Sidekick_base_term.Term.state</a></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-bin.Sidekick_smtlib__.Process.Solver.THEORY)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » THEORY</nav><h1>Module type <code>Solver.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p>Pop backtracking levels, restoring the theory to its former state</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-bin.Sidekick_smtlib__.Process.Solver.THEORY)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__</a> » <a href="../../index.html">Process</a> » <a href="../index.html">Solver</a> » THEORY</nav><h1>Module type <code>Solver.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory (ideally, unique and short)</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p><p>Called once for every solver this theory is added to.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state <b>equivalent</b> to what it was just before <code>push_level</code>.</p><p>it does not have to be exactly the same state, it just needs to be equivalent.</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p><code>pop_levels theory n</code> pops <code>n</code> backtracking levels, restoring <code>theory</code> to its state before calling <code>push_level</code> n times.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-bin.Sidekick_smtlib__Process.Solver.Atom)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » Atom</nav><h1>Module <code>Solver.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Atom (sidekick-bin.Sidekick_smtlib__Process.Solver.Atom)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » Atom</nav><h1>Module <code>Solver.Atom</code></h1><h4 id="boolean-atoms"><a href="#boolean-atoms" class="anchor"></a>Boolean Atoms</h4><p>Atoms are the SAT solver's version of our boolean literals (they may have a different representation).</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> CCFormat.printer</span></code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-formula"><a href="#val-formula" class="anchor"></a><code><span class="keyword">val</span> formula : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-lit">lit</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-bin.Sidekick_smtlib__Process.Solver.Lit)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » Lit</nav><h1>Module <code>Solver.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick-bin.Sidekick_smtlib__Process.Solver.Lit)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » Lit</nav><h1>Module <code>Solver.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-bin.Sidekick_smtlib__Process.Solver.Model)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » Model</nav><h1>Module <code>Solver.Model</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Model (sidekick-bin.Sidekick_smtlib__Process.Solver.Model)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » Model</nav><h1>Module <code>Solver.Model</code></h1><p>Models</p><p>A model can be produced when the solver is found to be in a satisfiable state after a call to <a href="../index.html#val-solve"><code>solve</code></a>.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></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="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.CC.Actions)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.CC.Actions)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Actions</nav><h1>Module <code>CC.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../index.html#type-actions">actions</a></code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../../../sidekick/Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.CC.Expl)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.CC.Expl)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » Expl</nav><h1>Module <code>CC.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.CC.N)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)?</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.CC.N)</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">sidekick-bin</a> » <a href="../../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../../index.html">Solver</a> » <a href="../../index.html">Solver_internal</a> » <a href="../index.html">CC</a> » N</nav><h1>Module <code>CC.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An equivalent class, containing terms that are proved to be equal.</p><p>A value of type <code>t</code> points to a particular term, but see <a href="../index.html#val-find"><code>find</code></a> to get the representative of the class.</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)? See <a href="../index.html#val-find"><code>find</code></a> to get the root.</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Access the bit field</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.Simplify)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks.</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Simplify (sidekick-bin.Sidekick_smtlib__Process.Solver.Solver_internal.Simplify)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">Solver_internal</a> » Simplify</nav><h1>Module <code>Solver_internal.Simplify</code></h1><p>Simplify terms</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-tst"><a href="#val-tst" class="anchor"></a><code><span class="keyword">val</span> tst : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term_state">term_state</a></code></dt><dt class="spec value" id="val-ty_st"><a href="#val-ty_st" class="anchor"></a><code><span class="keyword">val</span> ty_st : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-ty_state">ty_state</a></code></dt><dt class="spec value" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span class="keyword">val</span> clear : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Reset internal cache, etc.</p></dd></dl><dl><dt class="spec type" id="type-hook"><a href="#type-hook" class="anchor"></a><code><span class="keyword">type</span> hook</code><code> = <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <span><a href="../index.html#type-term">term</a> option</span></code></dt><dd><p>Given a term, try to simplify it. Return <code>None</code> if it didn't change.</p><p>A simple example could be a hook that takes a term <code>t</code>, and if <code>t</code> is <code>app "+" (const x) (const y)</code> where <code>x</code> and <code>y</code> are number, returns <code>Some (const (x+y))</code>, and <code>None</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-normalize"><a href="#val-normalize" class="anchor"></a><code><span class="keyword">val</span> normalize : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dd><p>Normalize a term using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the term.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-bin.Sidekick_smtlib__Process.Solver.T.Fun)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fun (sidekick-bin.Sidekick_smtlib__Process.Solver.T.Fun)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Fun</nav><h1>Module <code>T.Fun</code></h1><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-bin.Sidekick_smtlib__Process.Solver.T.Ty)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ty (sidekick-bin.Sidekick_smtlib__Process.Solver.T.Ty)</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">sidekick-bin</a> » <a href="../../../index.html">Sidekick_smtlib__Process</a> » <a href="../../index.html">Solver</a> » <a href="../index.html">T</a> » Ty</nav><h1>Module <code>T.Ty</code></h1><p>Types</p><p>Types should be comparable (ideally, in O(1)), and have at least a boolean type available.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a></code></dt></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../../sidekick/Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = <a href="../../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt></dl><dl><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : <a href="index.html#type-state">state</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-is_bool"><a href="#val-is_bool" class="anchor"></a><code><span class="keyword">val</span> is_bool : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-bin.Sidekick_smtlib__Process.Solver.T)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » T</nav><h1>Module <code>Solver.T</code></h1></header><div class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Ty/index.html#type-state">state</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></div><div class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-t">Sidekick_base_term.Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-state">Sidekick_base_term.Term.state</a></code></div></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>T (sidekick-bin.Sidekick_smtlib__Process.Solver.T)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » T</nav><h1>Module <code>Solver.T</code></h1></header><dl><dt class="spec module" id="module-Fun"><a href="#module-Fun" class="anchor"></a><code><span class="keyword">module</span> <a href="Fun/index.html">Fun</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd><p>A function symbol, like "f" or "plus" or "is_human" or "socrates"</p></dd></dl><dl><dt class="spec module" id="module-Ty"><a href="#module-Ty" class="anchor"></a><code><span class="keyword">module</span> <a href="Ty/index.html">Ty</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Ty/index.html#type-t">t</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-t">Sidekick_base_term.Ty.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Ty/index.html#type-state">state</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Ty/index.html#type-state">Sidekick_base_term.Ty.state</a></code></dt><dd><p>Types</p></dd></dl><dl><dt class="spec module" id="module-Term"><a href="#module-Term" class="anchor"></a><code><span class="keyword">module</span> <a href="Term/index.html">Term</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span> <span class="keyword">with</span> <span class="keyword">type</span> <a href="Term/index.html#type-t">t</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-t">Sidekick_base_term.Term.t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="Term/index.html#type-state">state</a> = <a href="../../../../sidekick-arith/Sidekick_base_term__Base_types/Term/index.html#type-state">Sidekick_base_term.Term.state</a></code></dt><dd><p>Term structure.</p></dd></dl></div></body></html>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-bin.Sidekick_smtlib__Process.Solver.THEORY)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » THEORY</nav><h1>Module type <code>Solver.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p>Pop backtracking levels, restoring the theory to its former state</p></dd></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>THEORY (sidekick-bin.Sidekick_smtlib__Process.Solver.THEORY)</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">sidekick-bin</a> » <a href="../../index.html">Sidekick_smtlib__Process</a> » <a href="../index.html">Solver</a> » THEORY</nav><h1>Module type <code>Solver.THEORY</code></h1><h4 id="a-theory"><a href="#a-theory" class="anchor"></a>A theory</h4><p>Theories are abstracted over the concrete implementation of the solver, so they can work with any implementation.</p><p>Typically a theory should be a functor taking an argument containing a <code>SOLVER_INTERNAL</code> or even a full <code>SOLVER</code>, and some additional views on terms, literals, etc. that are specific to the theory (e.g. to map terms to linear expressions). The theory can then be instantiated on any kind of solver for any term representation that also satisfies the additional theory-specific requirements. Instantiated theories (ie values of type <a href="../../../../sidekick/Sidekick_core/module-type-SOLVER/index.html#type-theory"><code>Sidekick_core.SOLVER.theory</code></a>) can be added to the solver.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>The theory's state</p></dd></dl><dl><dt class="spec value" id="val-name"><a href="#val-name" class="anchor"></a><code><span class="keyword">val</span> name : string</code></dt><dd><p>Name of the theory (ideally, unique and short)</p></dd></dl><dl><dt class="spec value" id="val-create_and_setup"><a href="#val-create_and_setup" class="anchor"></a><code><span class="keyword">val</span> create_and_setup : <a href="../Solver_internal/index.html#type-t">Solver_internal.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Instantiate the theory's state for the given (internal) solver, register callbacks, create keys, etc.</p><p>Called once for every solver this theory is added to.</p></dd></dl><dl><dt class="spec value" id="val-push_level"><a href="#val-push_level" class="anchor"></a><code><span class="keyword">val</span> push_level : <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>Push backtracking level. When the corresponding pop is called, the theory's state should be restored to a state <b>equivalent</b> to what it was just before <code>push_level</code>.</p><p>it does not have to be exactly the same state, it just needs to be equivalent.</p></dd></dl><dl><dt class="spec value" id="val-pop_levels"><a href="#val-pop_levels" class="anchor"></a><code><span class="keyword">val</span> pop_levels : <a href="index.html#type-t">t</a> <span>-></span> int <span>-></span> unit</code></dt><dd><p><code>pop_levels theory n</code> pops <code>n</code> backtracking levels, restoring <code>theory</code> to its state before calling <code>push_level</code> n times.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick.Sidekick_cc.Make.Expl)</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">sidekick</a> » <a href="../../index.html">Sidekick_cc</a> » <a href="../index.html">Make</a> » Expl</nav><h1>Module <code>Make.Expl</code></h1></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Expl (sidekick.Sidekick_cc.Make.Expl)</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">sidekick</a> » <a href="../../index.html">Sidekick_cc</a> » <a href="../index.html">Make</a> » Expl</nav><h1>Module <code>Make.Expl</code></h1><p>Explanations</p><p>Explanations are specialized proofs, created by the congruence closure when asked to justify why 2 terms are equal.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-mk_merge"><a href="#val-mk_merge" class="anchor"></a><code><span class="keyword">val</span> mk_merge : <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="../N/index.html#type-t">N.t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_merge_t"><a href="#val-mk_merge_t" class="anchor"></a><code><span class="keyword">val</span> mk_merge_t : <a href="../index.html#type-term">term</a> <span>-></span> <a href="../index.html#type-term">term</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_lit"><a href="#val-mk_lit" class="anchor"></a><code><span class="keyword">val</span> mk_lit : <a href="../index.html#type-lit">lit</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_list"><a href="#val-mk_list" class="anchor"></a><code><span class="keyword">val</span> mk_list : <span><a href="index.html#type-t">t</a> list</span> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-mk_theory"><a href="#val-mk_theory" class="anchor"></a><code><span class="keyword">val</span> mk_theory : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick.Sidekick_cc.Make.N)</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">sidekick</a> » <a href="../../index.html">Sidekick_cc</a> » <a href="../index.html">Make</a> » N</nav><h1>Module <code>Make.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)?</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>N (sidekick.Sidekick_cc.Make.N)</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">sidekick</a> » <a href="../../index.html">Sidekick_cc</a> » <a href="../index.html">Make</a> » N</nav><h1>Module <code>Make.N</code></h1><p>An equivalence class is a set of terms that are currently equal in the partial model built by the solver. The class is represented by a collection of nodes, one of which is distinguished and is called the "representative".</p><p>All information pertaining to the whole equivalence class is stored in this representative's node.</p><p>When two classes become equal (are "merged"), one of the two representatives is picked as the representative of the new class. The new class contains the union of the two old classes' nodes.</p><p>We also allow theories to store additional information in the representative. This information can be used when two classes are merged, to detect conflicts and solve equations à la Shostak.</p></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An equivalent class, containing terms that are proved to be equal.</p><p>A value of type <code>t</code> points to a particular term, but see <a href="../index.html#val-find"><code>find</code></a> to get the representative of the class.</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="../index.html#type-term">term</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt><dt class="spec value" id="val-is_root"><a href="#val-is_root" class="anchor"></a><code><span class="keyword">val</span> is_root : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Is the node a root (ie the representative of its class)? See <a href="../index.html#val-find"><code>find</code></a> to get the root.</p></dd></dl><dl><dt class="spec value" id="val-iter_class"><a href="#val-iter_class" class="anchor"></a><code><span class="keyword">val</span> iter_class : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the congruence class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec value" id="val-iter_parents"><a href="#val-iter_parents" class="anchor"></a><code><span class="keyword">val</span> iter_parents : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="index.html#type-t">t</a> Iter.t</span></code></dt><dd><p>Traverse the parents of the class. Precondition: <code>is_root n</code> (see <a href="../index.html#val-find"><code>find</code></a> below)</p></dd></dl><dl><dt class="spec type" id="type-bitfield"><a href="#type-bitfield" class="anchor"></a><code><span class="keyword">type</span> bitfield</code></dt><dd><p>A field in the bitfield of this node. This should only be allocated when a theory is initialized.</p><p>All fields are initially 0, are backtracked automatically, and are merged automatically when classes are merged.</p></dd></dl><dl><dt class="spec value" id="val-get_field"><a href="#val-get_field" class="anchor"></a><code><span class="keyword">val</span> get_field : <a href="index.html#type-bitfield">bitfield</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Access the bit field</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick.Sidekick_cc.Make.1-A.Actions)</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">sidekick</a> » <a href="../../../index.html">Sidekick_cc</a> » <a href="../../index.html">Make</a> » <a href="../index.html">1-A</a> » Actions</nav><h1>Module <code>1-A.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Actions (sidekick.Sidekick_cc.Make.1-A.Actions)</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">sidekick</a> » <a href="../../../index.html">Sidekick_cc</a> » <a href="../../index.html">Make</a> » <a href="../index.html">1-A</a> » Actions</nav><h1>Module <code>1-A.Actions</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><div class="spec module" id="module-P"><a href="#module-P" class="anchor"></a><code><span class="keyword">module</span> P = <a href="../index.html#module-P">P</a></code></div><div class="spec module" id="module-Lit"><a href="#module-Lit" class="anchor"></a><code><span class="keyword">module</span> Lit = <a href="../index.html#module-Lit">Lit</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>An action handle. It is used by the congruence closure to perform the actions below. How it performs the actions is not specified and is solver-specific.</p></dd></dl><dl><dt class="spec value" id="val-raise_conflict"><a href="#val-raise_conflict" class="anchor"></a><code><span class="keyword">val</span> raise_conflict : <a href="index.html#type-t">t</a> <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>raise_conflict acts c pr</code> declares that <code>c</code> is a tautology of the theory of congruence. This does not return (it should raise an exception).</p><dl><dt>parameter pr</dt><dd><p>the proof of <code>c</code> being a tautology</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-propagate"><a href="#val-propagate" class="anchor"></a><code><span class="keyword">val</span> propagate : <a href="index.html#type-t">t</a> <span>-></span> <a href="Lit/index.html#type-t">Lit.t</a> <span>-></span> <span>reason:<span>(unit <span>-></span> <span><a href="Lit/index.html#type-t">Lit.t</a> list</span>)</span></span> <span>-></span> <a href="P/index.html#type-t">P.t</a> <span>-></span> unit</code></dt><dd><p><code>propagate acts lit ~reason pr</code> declares that <code>reason() => lit</code> is a tautology.</p><ul><li><code>reason()</code> should return a list of literals that are currently true.</li><li><code>lit</code> should be a literal of interest (see <a href="../../../../Sidekick_core/module-type-CC_S/index.html#val-set_as_lit"><code>Sidekick_core.CC_S.set_as_lit</code></a>).</li></ul><p>This function might never be called, a congruence closure has the right to not propagate and only trigger conflicts.</p></dd></dl></div></body></html>
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick.Sidekick_cc.Make.1-A.Lit)</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">sidekick</a> » <a href="../../../index.html">Sidekick_cc</a> » <a href="../../index.html">Make</a> » <a href="../index.html">1-A</a> » Lit</nav><h1>Module <code>1-A.Lit</code></h1></header><div class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></div><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lit (sidekick.Sidekick_cc.Make.1-A.Lit)</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">sidekick</a> » <a href="../../../index.html">Sidekick_cc</a> » <a href="../../index.html">Make</a> » <a href="../index.html">1-A</a> » Lit</nav><h1>Module <code>1-A.Lit</code></h1></header><dl><dt class="spec module" id="module-T"><a href="#module-T" class="anchor"></a><code><span class="keyword">module</span> T = <a href="../index.html#module-T">T</a></code></dt><dd><p>Literals depend on terms</p></dd></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dd><p>A literal</p></dd></dl><dl><dt class="spec value" id="val-term"><a href="#val-term" class="anchor"></a><code><span class="keyword">val</span> term : <a href="index.html#type-t">t</a> <span>-></span> <a href="T/Term/index.html#type-t">T.Term.t</a></code></dt><dd><p>Get the (positive) term</p></dd></dl><dl><dt class="spec value" id="val-sign"><a href="#val-sign" class="anchor"></a><code><span class="keyword">val</span> sign : <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Get the sign. A negated literal has sign <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-neg"><a href="#val-neg" class="anchor"></a><code><span class="keyword">val</span> neg : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p>Take negation of literal. <code>sign (neg lit) = not (sign lit)</code>.</p></dd></dl><dl><dt class="spec value" id="val-abs"><a href="#val-abs" class="anchor"></a><code><span class="keyword">val</span> abs : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>abs lit</code> is like <code>lit</code> but always positive, i.e. <code>sign (abs lit) = true</code></p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>-></span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : <span><a href="index.html#type-t">t</a> <a href="../../../../Sidekick_core/index.html#module-Fmt">Sidekick_core.Fmt</a>.printer</span></code></dt></dl></div></body></html>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue