sidekick/dev/sidekick-bin/Sidekick_smtlib/Process/Solver/P/index.html
2021-08-24 22:15:31 +00:00

2 lines
No EOL
8.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>P (sidekick-bin.Sidekick_smtlib.Process.Solver.P)</title><link rel="stylesheet" href="../../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.3"/><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> &#x00BB; <a href="../../../index.html">Sidekick_smtlib</a> &#x00BB; <a href="../../index.html">Process</a> &#x00BB; <a href="../index.html">Solver</a> &#x00BB; P</nav><h1>Module <code>Solver.P</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="../index.html#type-proof">proof</a></code></dt><dd><p>The abstract representation of a proof. A proof always proves a clause to be <b>valid</b> (true in every possible interpretation of the problem's assertions, and the theories)</p></dd></dl><dl><dt class="spec type" id="type-term"><a href="#type-term" class="anchor"></a><code><span class="keyword">type</span> term</code><code> = <a href="../T/Term/index.html#type-t">T.Term.t</a></code></dt><dt class="spec type" id="type-lit"><a href="#type-lit" class="anchor"></a><code><span class="keyword">type</span> lit</code><code> = <a href="../Lit/index.html#type-t">Lit.t</a></code></dt></dl><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../../../../../sidekick/Sidekick_core/index.html#module-type-CC_PROOF">Sidekick_core.CC_PROOF</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../../../../../sidekick/Sidekick_core/module-type-CC_PROOF/index.html#type-t">t</a> := <a href="index.html#type-t">t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="../../../../../sidekick/Sidekick_core/module-type-CC_PROOF/index.html#type-lit">lit</a> := <a href="index.html#type-lit">lit</a></code></span></summary><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt><dt class="spec type" id="type-lit"><a href="#type-lit" class="anchor"></a><code><span class="keyword">type</span> lit</code></dt></dl><dl><dt class="spec value" id="val-lemma_cc"><a href="#val-lemma_cc" class="anchor"></a><code><span class="keyword">val</span> lemma_cc : <span><a href="index.html#type-lit">lit</a> Iter.t</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p><code>lemma_cc proof lits</code> asserts that <code>lits</code> form a tautology for the theory of uninterpreted functions.</p></dd></dl></details></div></div></div><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../../../../../sidekick/Sidekick_core/index.html#module-type-SAT_PROOF">Sidekick_core.SAT_PROOF</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../../../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html#type-t">t</a> := <a href="index.html#type-t">t</a> <span class="keyword">and</span> <span class="keyword">type</span> <a href="../../../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html#type-lit">lit</a> := <a href="index.html#type-lit">lit</a></code></span></summary><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 stored proof (possibly nil, possibly on disk, possibly in memory)</p></dd></dl><dl><dt class="spec type" id="type-lit"><a href="#type-lit" class="anchor"></a><code><span class="keyword">type</span> lit</code></dt><dd><p>A boolean literal for the proof trace</p></dd></dl><dl><dt class="spec type" id="type-dproof"><a href="#type-dproof" class="anchor"></a><code><span class="keyword">type</span> dproof</code><code> = <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>A delayed proof, used to produce proofs on demand from theories.</p></dd></dl><dl><dt class="spec value" id="val-with_proof"><a href="#val-with_proof" class="anchor"></a><code><span class="keyword">val</span> with_proof : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span>(<a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> unit</code></dt><dd><p>If proof is enabled, call <code>f</code> on it to emit steps. if proof is disabled, the callback won't even be called.</p></dd></dl><dl><dt class="spec value" id="val-emit_input_clause"><a href="#val-emit_input_clause" class="anchor"></a><code><span class="keyword">val</span> emit_input_clause : <span><a href="index.html#type-lit">lit</a> Iter.t</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Emit an input clause.</p></dd></dl><dl><dt class="spec value" id="val-emit_redundant_clause"><a href="#val-emit_redundant_clause" class="anchor"></a><code><span class="keyword">val</span> emit_redundant_clause : <span><a href="index.html#type-lit">lit</a> Iter.t</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Emit a clause deduced by the SAT solver, redundant wrt axioms. The clause must be RUP wrt previous clauses.</p></dd></dl><dl><dt class="spec value" id="val-del_clause"><a href="#val-del_clause" class="anchor"></a><code><span class="keyword">val</span> del_clause : <span><a href="index.html#type-lit">lit</a> Iter.t</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Forget a clause. Only useful for performance considerations.</p></dd></dl></details></div></div></div><dl><dt class="spec value" id="val-begin_subproof"><a href="#val-begin_subproof" class="anchor"></a><code><span class="keyword">val</span> begin_subproof : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Begins a subproof. The result of this will only be the clause with which <a href="index.html#val-end_subproof"><code>end_subproof</code></a> is called; all other intermediate steps will be discarded.</p></dd></dl><dl><dt class="spec value" id="val-end_subproof"><a href="#val-end_subproof" class="anchor"></a><code><span class="keyword">val</span> end_subproof : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p><code>end_subproof p</code> ends the current active subproof, the last result of which is kept.</p></dd></dl><dl><dt class="spec value" id="val-define_term"><a href="#val-define_term" class="anchor"></a><code><span class="keyword">val</span> define_term : <a href="index.html#type-term">term</a> <span>&#45;&gt;</span> <a href="index.html#type-term">term</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p><code>define_term p cst u</code> defines the new constant <code>cst</code> as being equal to <code>u</code>.</p></dd></dl><dl><dt class="spec value" id="val-lemma_true"><a href="#val-lemma_true" class="anchor"></a><code><span class="keyword">val</span> lemma_true : <a href="index.html#type-term">term</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p><code>lemma_true p (true)</code> asserts the clause <code>(true)</code></p></dd></dl><dl><dt class="spec value" id="val-lemma_preprocess"><a href="#val-lemma_preprocess" class="anchor"></a><code><span class="keyword">val</span> lemma_preprocess : <a href="index.html#type-term">term</a> <span>&#45;&gt;</span> <a href="index.html#type-term">term</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p><code>lemma_preprocess p t u</code> asserts that <code>t = u</code> is a tautology and that <code>t</code> has been preprocessed into <code>u</code>. From now on, <code>t</code> and <code>u</code> will be used interchangeably.</p></dd></dl></div></body></html>