mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-06 11:15:43 -05:00
3 lines
No EOL
28 KiB
HTML
3 lines
No EOL
28 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Proof_dummy (sidekick-base.Sidekick_base.Proof_dummy)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.0.2"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">sidekick-base</a> » <a href="../index.html">Sidekick_base</a> » Proof_dummy</nav><header class="odoc-preamble"><h1>Module <code><span>Sidekick_base.Proof_dummy</span></code></h1><p>Dummy proof module that does nothing.</p></header><div class="odoc-content"><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_core/module-type-PROOF/index.html">Sidekick_core.PROOF</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-PROOF/index.html#type-t">t</a> = <span class="keyword">private</span> unit</span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-PROOF/index.html#type-proof_step">proof_step</a> = <span class="keyword">private</span> unit</span> <span class="keyword">and</span> <span><span class="keyword">type</span>
|
||
<a href="../../../sidekick/Sidekick_core/module-type-PROOF/index.html#type-lit">lit</a> = <a href="../Lit/index.html#type-t">Lit.t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-PROOF/index.html#type-term">term</a> = <a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a></span></span></code></summary><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = <span class="keyword">private</span> unit</span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec type" id="type-proof_step" class="anchored"><a href="#type-proof_step" class="anchor"></a><code><span><span class="keyword">type</span> proof_step</span><span> = <span class="keyword">private</span> unit</span></code></div><div class="spec-doc"><p>Identifier for a proof proof_rule (like a unique ID for a clause previously added/proved)</p></div></div><div class="odoc-spec"><div class="spec type" id="type-term" class="anchored"><a href="#type-term" class="anchor"></a><code><span><span class="keyword">type</span> term</span><span> = <a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a></span></code></div></div><div class="odoc-spec"><div class="spec type" id="type-lit" class="anchored"><a href="#type-lit" class="anchor"></a><code><span><span class="keyword">type</span> lit</span><span> = <a href="../Lit/index.html#type-t">Lit.t</a></span></code></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html">Sidekick_core.SAT_PROOF</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html#type-t">t</a> := <a href="#type-t">t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html#type-lit">lit</a> := <a href="#type-lit">lit</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html#type-proof_step">proof_step</a> := <a href="#type-proof_step">proof_step</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_core/module-type-SAT_PROOF/index.html#type-proof_rule">proof_rule</a> := <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></span></code></summary><div class="odoc-spec"><div class="spec module" id="module-Step_vec" class="anchored"><a href="#module-Step_vec" class="anchor"></a><code><span><span class="keyword">module</span> </span><span><a href="Step_vec/index.html">Step_vec</a></span><span> : <a href="../../../sidekick/Sidekick_util/Vec_sig/module-type-S/index.html">Sidekick_util.Vec_sig.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_util/Vec_sig/module-type-S/index.html#type-elt">elt</a> = <a href="#type-proof_step">proof_step</a></span></span></code></div><div class="spec-doc"><p>A vector of steps</p></div></div><div class="odoc-spec"><div class="spec value" id="val-enabled" class="anchored"><a href="#val-enabled" class="anchor"></a><code><span><span class="keyword">val</span> enabled : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Returns true if proof production is enabled</p></div></div><div class="odoc-spec"><div class="spec value" id="val-emit_input_clause" class="anchored"><a href="#val-emit_input_clause" class="anchor"></a><code><span><span class="keyword">val</span> emit_input_clause : <span><span><a href="#type-lit">lit</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>Emit an input clause.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-emit_redundant_clause" class="anchored"><a href="#val-emit_redundant_clause" class="anchor"></a><code><span><span class="keyword">val</span> emit_redundant_clause : <span><span><a href="#type-lit">lit</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span>hyps:<span><a href="#type-proof_step">proof_step</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>Emit a clause deduced by the SAT solver, redundant wrt previous clauses. The clause must be RUP wrt <code>hyps</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-emit_unsat_core" class="anchored"><a href="#val-emit_unsat_core" class="anchor"></a><code><span><span class="keyword">val</span> emit_unsat_core : <span><span><a href="#type-lit">lit</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>Produce a proof of the empty clause given this subset of the assumptions. FIXME: probably needs the list of proof_step that disprove the lits?</p></div></div><div class="odoc-spec"><div class="spec value" id="val-emit_unsat" class="anchored"><a href="#val-emit_unsat" class="anchor"></a><code><span><span class="keyword">val</span> emit_unsat : <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Signal "unsat" result at the given proof</p></div></div><div class="odoc-spec"><div class="spec value" id="val-del_clause" class="anchored"><a href="#val-del_clause" class="anchor"></a><code><span><span class="keyword">val</span> del_clause : <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><span><a href="#type-lit">lit</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Forget a clause. Only useful for performance considerations.</p></div></div></details></div><div class="odoc-spec"><div class="spec value" id="val-lemma_cc" class="anchored"><a href="#val-lemma_cc" class="anchor"></a><code><span><span class="keyword">val</span> lemma_cc : <span><span><a href="#type-lit">lit</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_cc proof lits</code> asserts that <code>lits</code> form a tautology for the theory of uninterpreted functions.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-define_term" class="anchored"><a href="#val-define_term" class="anchor"></a><code><span><span class="keyword">val</span> define_term : <span><a href="#type-term">term</a> <span class="arrow">-></span></span> <span><a href="#type-term">term</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>define_term cst u proof</code> defines the new constant <code>cst</code> as being equal to <code>u</code>. The result is a proof of the clause <code>cst = u</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-proof_p1" class="anchored"><a href="#val-proof_p1" class="anchor"></a><code><span><span class="keyword">val</span> proof_p1 : <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>proof_p1 p1 p2</code>, where <code>p1</code> proves the unit clause <code>t=u</code> (t:bool) and <code>p2</code> proves <code>C \/ t</code>, is the rule that produces <code>C \/ u</code>, i.e unit paramodulation.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-proof_r1" class="anchored"><a href="#val-proof_r1" class="anchor"></a><code><span><span class="keyword">val</span> proof_r1 : <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>proof_r1 p1 p2</code>, where <code>p1</code> proves the unit clause <code>|- t</code> (t:bool) and <code>p2</code> proves <code>C \/ ¬t</code>, is the rule that produces <code>C \/ u</code>, i.e unit resolution.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-proof_res" class="anchored"><a href="#val-proof_res" class="anchor"></a><code><span><span class="keyword">val</span> proof_res : <span>pivot:<a href="#type-term">term</a> <span class="arrow">-></span></span> <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>proof_res ~pivot p1 p2</code>, where <code>p1</code> proves the clause <code>|- C \/ l</code> and <code>p2</code> proves <code>D \/ ¬l</code>, where <code>l</code> is either <code>pivot</code> or <code>¬pivot</code>, is the rule that produces <code>C \/ D</code>, i.e boolean resolution.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-with_defs" class="anchored"><a href="#val-with_defs" class="anchor"></a><code><span><span class="keyword">val</span> with_defs : <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span><span><a href="#type-proof_step">proof_step</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>with_defs pr defs</code> specifies that <code>pr</code> is valid only in a context where the definitions <code>defs</code> are present.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_true" class="anchored"><a href="#val-lemma_true" class="anchor"></a><code><span><span class="keyword">val</span> lemma_true : <span><a href="#type-term">term</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_true (true) p</code> asserts the clause <code>(true)</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_preprocess" class="anchored"><a href="#val-lemma_preprocess" class="anchor"></a><code><span><span class="keyword">val</span> lemma_preprocess : <span><a href="#type-term">term</a> <span class="arrow">-></span></span> <span><a href="#type-term">term</a> <span class="arrow">-></span></span> <span>using:<span><a href="#type-proof_step">proof_step</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_preprocess t u ~using p</code> asserts that <code>t = u</code> is a tautology and that <code>t</code> has been preprocessed into <code>u</code>.</p><p>The theorem <code>/\_{eqn in using} eqn |- t=u</code> is proved using congruence closure, and then resolved against the clauses <code>using</code> to obtain a unit equality.</p><p>From now on, <code>t</code> and <code>u</code> will be used interchangeably.</p><ul class="at-tags"><li class="returns"><span class="at-tag">returns</span> <p>a proof_rule ID for the clause <code>(t=u)</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_rw_clause" class="anchored"><a href="#val-lemma_rw_clause" class="anchor"></a><code><span><span class="keyword">val</span> lemma_rw_clause : <span><a href="#type-proof_step">proof_step</a> <span class="arrow">-></span></span> <span>res:<span><a href="#type-lit">lit</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span>using:<span><a href="#type-proof_step">proof_step</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_rw_clause prc ~res ~using</code>, where <code>prc</code> is the proof of <code>|- c</code>, uses the equations <code>|- p_i = q_i</code> from <code>using</code> to rewrite some literals of <code>c</code> into <code>res</code>. This is used to preprocess literals of a clause (using <a href="#val-lemma_preprocess"><code>lemma_preprocess</code></a> individually).</p></div></div></details></div><div class="odoc-spec"><div class="spec type" id="type-proof_rule" class="anchored"><a href="#type-proof_rule" class="anchor"></a><code><span><span class="keyword">type</span> proof_rule</span><span> = <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-create" class="anchored"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_lra" class="anchored"><a href="#val-lemma_lra" class="anchor"></a><code><span><span class="keyword">val</span> lemma_lra : <span><span><a href="../Lit/index.html#type-t">Lit.t</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <a href="#type-proof_rule">proof_rule</a></span></code></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_th_data/module-type-PROOF/index.html">Sidekick_th_data.PROOF</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_data/module-type-PROOF/index.html#type-proof">proof</a> := <a href="#type-t">t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_data/module-type-PROOF/index.html#type-proof_step">proof_step</a> := <a href="#type-proof_step">proof_step</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_data/module-type-PROOF/index.html#type-lit">lit</a> := <a href="../Lit/index.html#type-t">Lit.t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_data/module-type-PROOF/index.html#type-term">term</a> := <a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-lemma_isa_cstor" class="anchored"><a href="#val-lemma_isa_cstor" class="anchor"></a><code><span><span class="keyword">val</span> lemma_isa_cstor : <span>cstor_t:<a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_isa_cstor (d …) (is-c t)</code> returns the clause <code>(c …) = t |- is-c t</code> or <code>(d …) = t |- ¬ (is-c t)</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_select_cstor" class="anchored"><a href="#val-lemma_select_cstor" class="anchor"></a><code><span><span class="keyword">val</span> lemma_select_cstor : <span>cstor_t:<a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_select_cstor (c t1…tn) (sel-c-i t)</code> returns a proof of <code>t = c t1…tn |- (sel-c-i t) = ti</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_isa_split" class="anchored"><a href="#val-lemma_isa_split" class="anchor"></a><code><span><span class="keyword">val</span> lemma_isa_split : <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><span><a href="../Lit/index.html#type-t">Lit.t</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_isa_split t lits</code> is the proof of <code>is-c1 t \/ is-c2 t \/ … \/ is-c_n t</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_isa_sel" class="anchored"><a href="#val-lemma_isa_sel" class="anchor"></a><code><span><span class="keyword">val</span> lemma_isa_sel : <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_isa_sel (is-c t)</code> is the proof of <code>is-c t |- t = c (sel-c-1 t)…(sel-c-n t)</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_isa_disj" class="anchored"><a href="#val-lemma_isa_disj" class="anchor"></a><code><span><span class="keyword">val</span> lemma_isa_disj : <span><a href="../Lit/index.html#type-t">Lit.t</a> <span class="arrow">-></span></span> <span><a href="../Lit/index.html#type-t">Lit.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_isa_disj (is-c t) (is-d t)</code> is the proof of <code>¬ (is-c t) \/ ¬ (is-c t)</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_cstor_inj" class="anchored"><a href="#val-lemma_cstor_inj" class="anchor"></a><code><span><span class="keyword">val</span> lemma_cstor_inj : <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_cstor_inj (c t1…tn) (c u1…un) i</code> is the proof of <code>c t1…tn = c u1…un |- ti = ui</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_cstor_distinct" class="anchored"><a href="#val-lemma_cstor_distinct" class="anchor"></a><code><span><span class="keyword">val</span> lemma_cstor_distinct : <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_isa_distinct (c …) (d …)</code> is the proof of the unit clause <code>|- (c …) ≠ (d …)</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_acyclicity" class="anchored"><a href="#val-lemma_acyclicity" class="anchor"></a><code><span><span class="keyword">val</span> lemma_acyclicity : <span><span><span>(<a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> * <a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a>)</span> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p><code>lemma_acyclicity pairs</code> is a proof of <code>t1=u1, …, tn=un |- false</code> by acyclicity.</p></div></div></details></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../sidekick/Sidekick_th_bool_static/module-type-PROOF/index.html">Sidekick_th_bool_static.PROOF</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_bool_static/module-type-PROOF/index.html#type-proof">proof</a> := <a href="#type-t">t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_bool_static/module-type-PROOF/index.html#type-proof_step">proof_step</a> := <a href="#type-proof_step">proof_step</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_bool_static/module-type-PROOF/index.html#type-lit">lit</a> := <a href="../Lit/index.html#type-t">Lit.t</a></span> <span class="keyword">and</span> <span><span class="keyword">type</span> <a href="../../../sidekick/Sidekick_th_bool_static/module-type-PROOF/index.html#type-term">term</a> := <a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-lemma_bool_tauto" class="anchored"><a href="#val-lemma_bool_tauto" class="anchor"></a><code><span><span class="keyword">val</span> lemma_bool_tauto : <span><span><a href="../Lit/index.html#type-t">Lit.t</a> <span class="xref-unresolved">Iter</span>.t</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>Boolean tautology lemma (clause)</p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_bool_c" class="anchored"><a href="#val-lemma_bool_c" class="anchor"></a><code><span><span class="keyword">val</span> lemma_bool_c : <span>string <span class="arrow">-></span></span> <span><span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> list</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>Basic boolean logic lemma for a clause <code>|- c</code>. <code>proof_bool_c b name cs</code> is the rule designated by <code>name</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_bool_equiv" class="anchored"><a href="#val-lemma_bool_equiv" class="anchor"></a><code><span><span class="keyword">val</span> lemma_bool_equiv : <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>Boolean tautology lemma (equivalence)</p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_ite_true" class="anchored"><a href="#val-lemma_ite_true" class="anchor"></a><code><span><span class="keyword">val</span> lemma_ite_true : <span>ite:<a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>lemma <code>a ==> ite a b c = b</code></p></div></div><div class="odoc-spec"><div class="spec value" id="val-lemma_ite_false" class="anchored"><a href="#val-lemma_ite_false" class="anchor"></a><code><span><span class="keyword">val</span> lemma_ite_false : <span>ite:<a href="../Base_types/Term/index.html#type-t">Base_types.Term.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-proof_step">proof_step</a></span></code></div><div class="spec-doc"><p>lemma <code>¬a ==> ite a b c = c</code></p></div></div></details></div></div></body></html> |