mirror of
https://github.com/c-cube/sidekick.git
synced 2025-12-07 19:55:41 -05:00
11 lines
No EOL
5.6 KiB
HTML
11 lines
No EOL
5.6 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sidekick_simplify (sidekick.Sidekick_simplify)</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</a> » Sidekick_simplify</nav><header class="odoc-preamble"><h1>Module <code><span>Sidekick_simplify</span></code></h1><p>Term simplifier</p></header><div class="odoc-content"><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><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_core/Term/index.html#type-store">Sidekick_core.Term.store</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><a href="../Sidekick_core/Term/index.html#type-store">Sidekick_core.Term.store</a> <span class="arrow">-></span></span> <span>proof:<a href="../Sidekick_core/Proof_trace/index.html#type-t">Sidekick_core.Proof_trace.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a simplifier</p></div></div><div class="odoc-spec"><div class="spec value" id="val-clear" class="anchored"><a href="#val-clear" class="anchor"></a><code><span><span class="keyword">val</span> clear : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Reset internal cache, etc.</p></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_core/Proof_trace/index.html#type-t">Sidekick_core.Proof_trace.t</a></span></code></div><div class="spec-doc"><p>Access proof</p></div></div><div class="odoc-spec"><div class="spec type" id="type-hook" class="anchored"><a href="#type-hook" class="anchor"></a><code><span><span class="keyword">type</span> hook</span><span> =
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Sidekick_core/Term/index.html#type-t">Sidekick_core.Term.t</a> <span class="arrow">-></span></span>
|
||
<span><span>(<a href="../Sidekick_core/Term/index.html#type-t">Sidekick_core.Term.t</a> * <span><a href="../Sidekick_core/Proof_step/index.html#type-id">Sidekick_core.Proof_step.id</a> <span class="xref-unresolved">Iter</span>.t</span>)</span> option</span></span></code></div><div class="spec-doc"><p>Given a Term.t, 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.t <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><p>The simplifier will take care of simplifying the resulting Term.t further, caching (so that work is not duplicated in subterms), etc.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-add_hook" class="anchored"><a href="#val-add_hook" class="anchor"></a><code><span><span class="keyword">val</span> add_hook : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-hook">hook</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-normalize" class="anchored"><a href="#val-normalize" class="anchor"></a><code><span><span class="keyword">val</span> normalize :
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Sidekick_core/Term/index.html#type-t">Sidekick_core.Term.t</a> <span class="arrow">-></span></span>
|
||
<span><span>(<a href="../Sidekick_core/Term/index.html#type-t">Sidekick_core.Term.t</a> * <a href="../Sidekick_core/Proof_step/index.html#type-id">Sidekick_core.Proof_step.id</a>)</span> option</span></span></code></div><div class="spec-doc"><p>Normalize a Term.t using all the hooks. This performs a fixpoint, i.e. it only stops when no hook applies anywhere inside the Term.t.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-normalize_t" class="anchored"><a href="#val-normalize_t" class="anchor"></a><code><span><span class="keyword">val</span> normalize_t :
|
||
<span><a href="#type-t">t</a> <span class="arrow">-></span></span>
|
||
<span><a href="../Sidekick_core/Term/index.html#type-t">Sidekick_core.Term.t</a> <span class="arrow">-></span></span>
|
||
<a href="../Sidekick_core/Term/index.html#type-t">Sidekick_core.Term.t</a> * <span><a href="../Sidekick_core/Proof_step/index.html#type-id">Sidekick_core.Proof_step.id</a> option</span></span></code></div><div class="spec-doc"><p>Normalize a Term.t using all the hooks, along with a proof that the simplification is correct. returns <code>t, ø</code> if no simplification occurred.</p></div></div></div></body></html> |