aboutsummaryrefslogtreecommitdiffstats
path: root/docs/proof/Show.html
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2020-11-26 01:00:41 +0000
committerYann Herklotz <git@yannherklotz.com>2020-11-26 01:00:41 +0000
commitfa4b252945a870100305c159d20e264be18973ce (patch)
tree435cbd07a2af45f3f08dc8ac892fa48044047eeb /docs/proof/Show.html
parent29bee524cccfe08c680f655b1969a4c421e0a969 (diff)
downloadvericert-fa4b252945a870100305c159d20e264be18973ce.tar.gz
vericert-fa4b252945a870100305c159d20e264be18973ce.zip
Add proof documentation
Diffstat (limited to 'docs/proof/Show.html')
-rw-r--r--docs/proof/Show.html90
1 files changed, 90 insertions, 0 deletions
diff --git a/docs/proof/Show.html b/docs/proof/Show.html
new file mode 100644
index 0000000..926ab3c
--- /dev/null
+++ b/docs/proof/Show.html
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" class="alectryon-standalone" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" />
+<title>Show.v</title>
+<link rel="stylesheet" href="alectryon.css" type="text/css" />
+<link rel="stylesheet" href="docutils_basic.css" type="text/css" />
+<link rel="stylesheet" href="tango_subtle.css" type="text/css" />
+<link rel="stylesheet" href="tango_subtle.min.css" type="text/css" />
+<script type="text/javascript" src="alectryon.js"></script>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/IBM-type/0.5.4/css/ibm-type.min.css" integrity="sha512-sky5cf9Ts6FY1kstGOBHSybfKqdHR41M0Ldb0BjNiv3ifltoQIsg0zIaQ+wwdwgQ0w9vKFW7Js50lxH9vqNSSw==" crossorigin="anonymous" />
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/firacode/5.2.0/fira_code.min.css" integrity="sha512-MbysAYimH1hH2xYzkkMHB6MqxBqfP0megxsCLknbYqHVwXTCg9IqHbk+ZP/vnhO8UEW6PaXAkKe2vQ+SWACxxA==" crossorigin="anonymous" />
+</head>
+<body>
+<div class="alectryon-root alectryon-floating"><div class="document">
+
+
+<pre class="alectryon-io"><!-- Generator: Alectryon v1.0 --><span class="coq-wsp"><span class="highlight"><span class="c">(* </span>
+<span class="c"> * Vericert: Verified high-level synthesis.</span>
+<span class="c"> * Copyright (C) 2019-2020 Yann Herklotz &lt;yann@yannherklotz.com&gt;</span>
+<span class="c"> *</span>
+<span class="c"> * This program is free software: you can redistribute it and/or modify</span>
+<span class="c"> * it under the terms of the GNU General Public License as published by</span>
+<span class="c"> * the Free Software Foundation, either version 3 of the License, or</span>
+<span class="c"> * (at your option) any later version.</span>
+<span class="c"> *</span>
+<span class="c"> * This program is distributed in the hope that it will be useful,</span>
+<span class="c"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
+<span class="c"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
+<span class="c"> * GNU General Public License for more details.</span>
+<span class="c"> *</span>
+<span class="c"> * You should have received a copy of the GNU General Public License</span>
+<span class="c"> * along with this program. If not, see &lt;https://www.gnu.org/licenses/&gt;.</span>
+<span class="c"> *)</span>
+
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">From</span> Coq <span class="kn">Require Import</span>
+ Strings.String
+ Bool.Bool
+ Arith.Arith
+ ZArith.ZArith.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Local Open Scope</span> string.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Class</span> <span class="nf">Show</span> <span class="nv">A</span> : <span class="kt">Type</span> :=
+ {
+ show : A -&gt; string
+ }.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Instance</span> <span class="nf">showBool</span> : <span class="kn">Show</span> bool :=
+ {
+ show := <span class="kr">fun</span> <span class="nv">b</span>:bool =&gt; <span class="kr">if</span> b <span class="kr">then</span> <span class="s2">&quot;true&quot;</span> <span class="kr">else</span> <span class="s2">&quot;false&quot;</span>
+ }.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Fixpoint</span> <span class="nf">string_of_nat_aux</span> (<span class="nv">time</span> <span class="nv">n</span> : nat) (<span class="nv">acc</span> : string) : string :=
+ <span class="kr">let</span> <span class="nv">d</span> := <span class="kr">match</span> n mod <span class="mi">10</span> <span class="kr">with</span>
+ | <span class="mi">0</span> =&gt; <span class="s2">&quot;0&quot;</span> | <span class="mi">1</span> =&gt; <span class="s2">&quot;1&quot;</span> | <span class="mi">2</span> =&gt; <span class="s2">&quot;2&quot;</span> | <span class="mi">3</span> =&gt; <span class="s2">&quot;3&quot;</span> | <span class="mi">4</span> =&gt; <span class="s2">&quot;4&quot;</span> | <span class="mi">5</span> =&gt; <span class="s2">&quot;5&quot;</span>
+ | <span class="mi">6</span> =&gt; <span class="s2">&quot;6&quot;</span> | <span class="mi">7</span> =&gt; <span class="s2">&quot;7&quot;</span> | <span class="mi">8</span> =&gt; <span class="s2">&quot;8&quot;</span> | _ =&gt; <span class="s2">&quot;9&quot;</span>
+ <span class="kr">end</span> <span class="kr">in</span>
+ <span class="kr">let</span> <span class="nv">acc&#39;</span> := d ++ acc <span class="kr">in</span>
+ <span class="kr">match</span> <span class="kp">time</span> <span class="kr">with</span>
+ | <span class="mi">0</span> =&gt; acc&#39;
+ | S time&#39; =&gt;
+ <span class="kr">match</span> n / <span class="mi">10</span> <span class="kr">with</span>
+ | <span class="mi">0</span> =&gt; acc&#39;
+ | n&#39; =&gt; string_of_nat_aux time&#39; n&#39; acc&#39;
+ <span class="kr">end</span>
+ <span class="kr">end</span>.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Definition</span> <span class="nf">string_of_nat</span> (<span class="nv">n</span> : nat) : string :=
+ string_of_nat_aux n n <span class="s2">&quot;&quot;</span>.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Instance</span> <span class="nf">showNat</span> : <span class="kn">Show</span> nat :=
+ {
+ show := string_of_nat
+ }.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Instance</span> <span class="nf">showZ</span> : <span class="kn">Show</span> Z :=
+ {
+ show a := show (Z.to_nat a)
+ }.</span></span><span class="coq-wsp">
+</span></span><span class="coq-wsp"><span class="highlight">
+</span></span><span class="coq-sentence"><span class="coq-input"><span class="highlight"><span class="kn">Instance</span> <span class="nf">showPositive</span> : <span class="kn">Show</span> positive :=
+ {
+ show a := show (Zpos a)
+ }.</span></span></span></pre>
+</div>
+</div></body>
+</html>