mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-06 11:15:43 -05:00
47 lines
No EOL
24 KiB
HTML
47 lines
No EOL
24 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Solver (sidekick-base.Sidekick_base.Solver)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.1.1"/><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> » Solver</nav><header class="odoc-preamble"><h1>Module <code><span>Sidekick_base.Solver</span></code></h1></header><div class="odoc-content"><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">struct</span> <span class="keyword">include</span> <a href="../../../sidekick/Sidekick_smt_solver/Solver/index.html">Sidekick_smt_solver.Solver</a> <span class="keyword">end</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></code></div><div class="spec-doc"><p>The solver's state.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-registry" class="anchored"><a href="#val-registry" class="anchor"></a><code><span><span class="keyword">val</span> registry : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="../../../sidekick/Sidekick_smt_solver/Registry/index.html#type-t">Sidekick_smt_solver.Registry.t</a></span></code></div><div class="spec-doc"><p>A solver contains a registry so that theories can share data</p></div></div><div class="odoc-spec"><div class="spec type" id="type-theory" class="anchored"><a href="#type-theory" class="anchor"></a><code><span><span class="keyword">type</span> theory</span><span> = <a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-t">Sidekick_smt_solver.Theory.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-mk_theory" class="anchored"><a href="#val-mk_theory" class="anchor"></a><code><span><span class="keyword">val</span> mk_theory :
|
||
<span>name:string <span class="arrow">-></span></span>
|
||
<span>create_and_setup:
|
||
<span>( <span>id:<a href="../../../sidekick/Sidekick_smt_solver/Theory_id/index.html#type-t">Sidekick_smt_solver.Theory_id.t</a> <span class="arrow">-></span></span>
|
||
<span><a href="../../../sidekick/Sidekick_smt_solver/Solver_internal/index.html#type-t">Sidekick_smt_solver.Solver_internal.t</a> <span class="arrow">-></span></span>
|
||
<span class="type-var">'th</span> )</span> <span class="arrow">-></span></span>
|
||
<span>?push_level:<span>( <span><span class="type-var">'th</span> <span class="arrow">-></span></span> unit )</span> <span class="arrow">-></span></span>
|
||
<span>?pop_levels:<span>( <span><span class="type-var">'th</span> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit )</span> <span class="arrow">-></span></span>
|
||
<span>unit <span class="arrow">-></span></span>
|
||
<a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-t">Sidekick_smt_solver.Theory.t</a></span></code></div><div class="spec-doc"><p>Helper to create a theory.</p></div></div><div class="odoc-spec"><div class="spec module" id="module-Unknown" class="anchored"><a href="#module-Unknown" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Unknown/index.html">Unknown</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><h4 id="main-api"><a href="#main-api" class="anchor"></a>Main API</h4><div class="odoc-spec"><div class="spec value" id="val-stats" class="anchored"><a href="#val-stats" class="anchor"></a><code><span><span class="keyword">val</span> stats : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="../../../sidekick/Sidekick_util/Stat/index.html#type-t">Sidekick_util.Stat.t</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-tst" class="anchored"><a href="#val-tst" class="anchor"></a><code><span><span class="keyword">val</span> tst : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="../../../sidekick/Sidekick_core/Term/index.html#type-store">Sidekick_smt_solver.Sigs.Term.store</a></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-proof" class="anchored"><a href="#val-proof" class="anchor"></a><code><span><span class="keyword">val</span> proof : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-proof_trace">Sidekick_smt_solver.Sigs.proof_trace</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><span>(<span class="keyword">module</span> <a href="../../../sidekick/Sidekick_smt_solver/Sigs/module-type-ARG/index.html">Sidekick_smt_solver.Sigs.ARG</a>)</span> <span class="arrow">-></span></span>
|
||
<span>?stat:<a href="../../../sidekick/Sidekick_util/Stat/index.html#type-t">Sidekick_util.Stat.t</a> <span class="arrow">-></span></span>
|
||
<span>?size:<span>[ `Big <span>| `Tiny</span> <span>| `Small</span> ]</span> <span class="arrow">-></span></span>
|
||
<span>proof:<a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-proof_trace">Sidekick_smt_solver.Sigs.proof_trace</a> <span class="arrow">-></span></span>
|
||
<span>theories:<span><a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-t">Sidekick_smt_solver.Theory.t</a> list</span> <span class="arrow">-></span></span>
|
||
<span><a href="../../../sidekick/Sidekick_core/Term/index.html#type-store">Sidekick_smt_solver.Sigs.Term.store</a> <span class="arrow">-></span></span>
|
||
<span>unit <span class="arrow">-></span></span>
|
||
<a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new solver.</p><p>It needs a term state and a type state to manipulate terms and types. All terms and types interacting with this solver will need to come from these exact states.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">store_proof</span> <p>if true, proofs from the SAT solver and theories are retained and potentially accessible after <code>solve</code> returns UNSAT.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">size</span> <p>influences the size of initial allocations.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">theories</span> <p>theories to load from the start. Other theories can be added using <code>add_theory</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-add_theory" class="anchored"><a href="#val-add_theory" class="anchor"></a><code><span><span class="keyword">val</span> add_theory : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-t">Sidekick_smt_solver.Theory.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Add a theory to the solver. This should be called before any call to <a href="#val-solve"><code>solve</code></a> or to <a href="#val-add_clause"><code>add_clause</code></a> and the likes (otherwise the theory will have a partial view of the problem).</p></div></div><div class="odoc-spec"><div class="spec value" id="val-add_theory_p" class="anchored"><a href="#val-add_theory_p" class="anchor"></a><code><span><span class="keyword">val</span> add_theory_p : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-p">Sidekick_smt_solver.Theory.p</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Add the given theory and obtain its state</p></div></div><div class="odoc-spec"><div class="spec value" id="val-add_theory_l" class="anchored"><a href="#val-add_theory_l" class="anchor"></a><code><span><span class="keyword">val</span> add_theory_l : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span><a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-t">Sidekick_smt_solver.Theory.t</a> list</span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-mk_lit_t" class="anchored"><a href="#val-mk_lit_t" class="anchor"></a><code><span><span class="keyword">val</span> mk_lit_t :
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span>?sign:bool <span class="arrow">-></span></span>
|
||
<span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-term">Sidekick_smt_solver.Sigs.term</a> <span class="arrow">-></span></span>
|
||
<a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a></span></code></div><div class="spec-doc"><p><code>mk_lit_t _ ~sign t</code> returns <code>lit'</code>, where <code>lit'</code> is <code>preprocess(lit)</code> and <code>lit</code> is an internal representation of <code>± t</code>.</p><p>The proof of <code>|- lit = lit'</code> is directly added to the solver's proof.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-add_clause" class="anchored"><a href="#val-add_clause" class="anchor"></a><code><span><span class="keyword">val</span> add_clause :
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span><span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> array</span> <span class="arrow">-></span></span>
|
||
<span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-step_id">Sidekick_smt_solver.Sigs.step_id</a> <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p><code>add_clause solver cs</code> adds a boolean clause to the solver. Subsequent calls to <a href="#val-solve"><code>solve</code></a> will need to satisfy this clause.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-add_clause_l" class="anchored"><a href="#val-add_clause_l" class="anchor"></a><code><span><span class="keyword">val</span> add_clause_l :
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span><span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> list</span> <span class="arrow">-></span></span>
|
||
<span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-step_id">Sidekick_smt_solver.Sigs.step_id</a> <span class="arrow">-></span></span>
|
||
unit</span></code></div><div class="spec-doc"><p>Add a clause to the solver, given as a list.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-assert_terms" class="anchored"><a href="#val-assert_terms" class="anchor"></a><code><span><span class="keyword">val</span> assert_terms : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-term">Sidekick_smt_solver.Sigs.term</a> list</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Helper that turns each term into an atom, before adding the result to the solver as an assertion</p></div></div><div class="odoc-spec"><div class="spec value" id="val-assert_term" class="anchored"><a href="#val-assert_term" class="anchor"></a><code><span><span class="keyword">val</span> assert_term : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-term">Sidekick_smt_solver.Sigs.term</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Helper that turns the term into an atom, before adding the result to the solver as a unit clause assertion</p></div></div><div class="odoc-spec"><div class="spec type" id="type-res" class="anchored"><a href="#type-res" class="anchor"></a><code><span><span class="keyword">type</span> res</span><span> = </span></code><table><tr id="type-res.Sat" class="anchored"><td class="def variant constructor"><a href="#type-res.Sat" class="anchor"></a><code><span>| </span><span><span class="constructor">Sat</span> <span class="keyword">of</span> <a href="../../../sidekick/Sidekick_smt_solver/Model/index.html#type-t">Sidekick_smt_solver.Model.t</a></span></code></td><td class="def-doc"><span class="comment-delim">(*</span><p>Satisfiable</p><span class="comment-delim">*)</span></td></tr><tr id="type-res.Unsat" class="anchored"><td class="def variant constructor"><a href="#type-res.Unsat" class="anchor"></a><code><span>| </span><span><span class="constructor">Unsat</span> <span class="keyword">of</span> </span><span>{</span></code><table><tr id="type-res.unsat_core" class="anchored"><td class="def record field"><a href="#type-res.unsat_core" class="anchor"></a><code><span>unsat_core : <span>unit <span class="arrow">-></span></span> <span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> <span class="xref-unresolved">Iter</span>.t</span>;</span></code></td><td class="def-doc"><span class="comment-delim">(*</span><p>Unsat core (subset of assumptions), or empty</p><span class="comment-delim">*)</span></td></tr><tr id="type-res.unsat_step_id" class="anchored"><td class="def record field"><a href="#type-res.unsat_step_id" class="anchor"></a><code><span>unsat_step_id : <span>unit <span class="arrow">-></span></span> <span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-step_id">Sidekick_smt_solver.Sigs.step_id</a> option</span>;</span></code></td><td class="def-doc"><span class="comment-delim">(*</span><p>Proof step for the empty clause</p><span class="comment-delim">*)</span></td></tr></table><code><span>}</span></code></td><td class="def-doc"><span class="comment-delim">(*</span><p>Unsatisfiable</p><span class="comment-delim">*)</span></td></tr><tr id="type-res.Unknown" class="anchored"><td class="def variant constructor"><a href="#type-res.Unknown" class="anchor"></a><code><span>| </span><span><span class="constructor">Unknown</span> <span class="keyword">of</span> <a href="Unknown/index.html#type-t">Unknown.t</a></span></code></td><td class="def-doc"><span class="comment-delim">(*</span><p>Unknown, obtained after a timeout, memory limit, etc.</p><span class="comment-delim">*)</span></td></tr></table></div><div class="spec-doc"><p>Result of solving for the current set of clauses</p></div></div><div class="odoc-spec"><div class="spec value" id="val-solve" class="anchored"><a href="#val-solve" class="anchor"></a><code><span><span class="keyword">val</span> solve :
|
||
<span>?on_exit:<span><span>( <span>unit <span class="arrow">-></span></span> unit )</span> list</span> <span class="arrow">-></span></span>
|
||
<span>?check:bool <span class="arrow">-></span></span>
|
||
<span>?on_progress:<span>( <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit )</span> <span class="arrow">-></span></span>
|
||
<span>?should_stop:<span>( <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> bool )</span> <span class="arrow">-></span></span>
|
||
<span>assumptions:<span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> list</span> <span class="arrow">-></span></span>
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<a href="#type-res">res</a></span></code></div><div class="spec-doc"><p><code>solve s</code> checks the satisfiability of the clauses added so far to <code>s</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">check</span> <p>if true, the model is checked before returning.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">on_progress</span> <p>called regularly during solving.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">assumptions</span> <p>a set of atoms held to be true. The unsat core, if any, will be a subset of <code>assumptions</code>.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">should_stop</span> <p>a callback regularly called with the solver, and with a number of "steps" done since last call. The exact notion of step is not defined, but is guaranteed to increase regularly. The function should return <code>true</code> if it judges solving must stop (returning <code>Unknown</code>), <code>false</code> if solving can proceed.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">on_exit</span> <p>functions to be run before this returns</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-last_res" class="anchored"><a href="#val-last_res" class="anchor"></a><code><span><span class="keyword">val</span> last_res : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-res">res</a> option</span></span></code></div><div class="spec-doc"><p>Last result, if any. Some operations will erase this (e.g. <a href="#val-assert_term"><code>assert_term</code></a>).</p></div></div><div class="odoc-spec"><div class="spec value" id="val-push_assumption" class="anchored"><a href="#val-push_assumption" class="anchor"></a><code><span><span class="keyword">val</span> push_assumption : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Pushes an assumption onto the assumption stack. It will remain there until it's pop'd by <a href="#val-pop_assumptions"><code>pop_assumptions</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-pop_assumptions" class="anchored"><a href="#val-pop_assumptions" class="anchor"></a><code><span><span class="keyword">val</span> pop_assumptions : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>pop_assumptions solver n</code> removes <code>n</code> assumptions from the stack. It removes the assumptions that were the most recently added via <code>push_assumptions</code>. Note that <a href="#val-check_sat_propagations_only"><code>check_sat_propagations_only</code></a> can call this if it meets a conflict.</p></div></div><div class="odoc-spec"><div class="spec type" id="type-propagation_result" class="anchored"><a href="#type-propagation_result" class="anchor"></a><code><span><span class="keyword">type</span> propagation_result</span><span> = </span></code><table><tr id="type-propagation_result.PR_sat" class="anchored"><td class="def variant constructor"><a href="#type-propagation_result.PR_sat" class="anchor"></a><code><span>| </span><span><span class="constructor">PR_sat</span></span></code></td></tr><tr id="type-propagation_result.PR_conflict" class="anchored"><td class="def variant constructor"><a href="#type-propagation_result.PR_conflict" class="anchor"></a><code><span>| </span><span><span class="constructor">PR_conflict</span> <span class="keyword">of</span> </span><span>{</span></code><table><tr id="type-propagation_result.backtracked" class="anchored"><td class="def record field"><a href="#type-propagation_result.backtracked" class="anchor"></a><code><span>backtracked : int;</span></code></td></tr></table><code><span>}</span></code></td></tr><tr id="type-propagation_result.PR_unsat" class="anchored"><td class="def variant constructor"><a href="#type-propagation_result.PR_unsat" class="anchor"></a><code><span>| </span><span><span class="constructor">PR_unsat</span> <span class="keyword">of</span> </span><span>{</span></code><table><tr id="type-propagation_result.unsat_core" class="anchored"><td class="def record field"><a href="#type-propagation_result.unsat_core" class="anchor"></a><code><span>unsat_core : <span>unit <span class="arrow">-></span></span> <span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> <span class="xref-unresolved">Iter</span>.t</span>;</span></code></td></tr></table><code><span>}</span></code></td></tr></table></div></div><div class="odoc-spec"><div class="spec value" id="val-check_sat_propagations_only" class="anchored"><a href="#val-check_sat_propagations_only" class="anchor"></a><code><span><span class="keyword">val</span> check_sat_propagations_only :
|
||
<span>assumptions:<span><a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-lit">Sidekick_smt_solver.Sigs.lit</a> list</span> <span class="arrow">-></span></span>
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<a href="#type-propagation_result">propagation_result</a></span></code></div><div class="spec-doc"><p><code>check_sat_propagations_only solver</code> uses assumptions (including the <code>assumptions</code> parameter, and atoms previously added via <code>push_assumptions</code>) and boolean+theory propagation to quickly assess satisfiability. It is not complete; calling <a href="#val-solve"><code>solve</code></a> is required to get an accurate result.</p><ul class="at-tags"><li class="returns"><span class="at-tag">returns</span> <p>one of:</p><ul><li><code>PR_sat</code> if the current state seems satisfiable</li><li><code>PR_conflict {backtracked=n}</code> if a conflict was found and resolved, leading to backtracking <code>n</code> levels of assumptions</li><li><code>PR_unsat …</code> if the assumptions were found to be unsatisfiable, with the given core.</li></ul></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-pp_stats" class="anchored"><a href="#val-pp_stats" class="anchor"></a><code><span><span class="keyword">val</span> pp_stats : <span><a href="#type-t">t</a> <span class="xref-unresolved">CCFormat</span>.printer</span></span></code></div><div class="spec-doc"><p>Print some statistics. What it prints exactly is unspecified.</p></div></div></details></div><div class="odoc-spec"><div class="spec value" id="val-default_arg" class="anchored"><a href="#val-default_arg" class="anchor"></a><code><span><span class="keyword">val</span> default_arg : <span>(<span class="keyword">module</span> <a href="../../../sidekick/Sidekick_smt_solver/Sigs/module-type-ARG/index.html">Sidekick_smt_solver.Sigs.ARG</a>)</span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-create_default" class="anchored"><a href="#val-create_default" class="anchor"></a><code><span><span class="keyword">val</span> create_default :
|
||
<span>?stat:<a href="../../../sidekick/Sidekick_util/Stat/index.html#type-t">Sidekick_util.Stat.t</a> <span class="arrow">-></span></span>
|
||
<span>?size:<span>[ `Big <span>| `Small</span> <span>| `Tiny</span> ]</span> <span class="arrow">-></span></span>
|
||
<span>proof:<a href="../../../sidekick/Sidekick_smt_solver/Sigs/index.html#type-proof_trace">Sidekick_smt_solver.Sigs.proof_trace</a> <span class="arrow">-></span></span>
|
||
<span>theories:<span><a href="../../../sidekick/Sidekick_smt_solver/Theory/index.html#type-t">Sidekick_smt_solver.Theory.t</a> list</span> <span class="arrow">-></span></span>
|
||
<span><a href="../../../sidekick/Sidekick_core/Term/index.html#type-store">Sidekick_smt_solver.Sigs.Term.store</a> <span class="arrow">-></span></span>
|
||
<a href="#type-t">t</a></span></code></div></div></div></body></html> |