aboutsummaryrefslogtreecommitdiffstats
path: root/src/common
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2020-03-31 19:40:21 +0100
committerYann Herklotz <git@yannherklotz.com>2020-03-31 19:40:21 +0100
commit0b4808a3705317c96387de036381e4e6add4e956 (patch)
tree3da3067ebee6ca85d68fc2c7c0d8b87d9eb18082 /src/common
parent580cfdf676931f8b590f6f1eb84e42da17569393 (diff)
downloadvericert-0b4808a3705317c96387de036381e4e6add4e956.tar.gz
vericert-0b4808a3705317c96387de036381e4e6add4e956.zip
Add documentation and fix makefile for Compcert
Diffstat (limited to 'src/common')
-rw-r--r--src/common/Coquplib.v32
-rw-r--r--src/common/Helper.v39
-rw-r--r--src/common/Show.v79
3 files changed, 75 insertions, 75 deletions
diff --git a/src/common/Coquplib.v b/src/common/Coquplib.v
index c633874..666d740 100644
--- a/src/common/Coquplib.v
+++ b/src/common/Coquplib.v
@@ -23,6 +23,8 @@ From Coq Require Export
List
Bool.
+From coqup Require Import Show.
+
(* Depend on CompCert for the basic library, as they declare and prove some
useful theorems. *)
From compcert.lib Require Export Coqlib.
@@ -42,3 +44,33 @@ Ltac solve_by_invert := solve_by_inverts 1.
(* Definition const (A B : Type) (a : A) (b : B) : A := a.
Definition compose (A B C : Type) (f : B -> C) (g : A -> B) (x : A) : C := f (g x). *)
+
+Module Option.
+
+Definition default {T : Type} (x : T) (u : option T) : T :=
+ match u with
+ | Some y => y
+ | _ => x
+ end.
+
+Definition map {S : Type} {T : Type} (f : S -> T) (u : option S) : option T :=
+ match u with
+ | Some y => Some (f y)
+ | _ => None
+ end.
+
+Definition liftA2 {T : Type} (f : T -> T -> T) (a : option T) (b : option T) : option T :=
+ match a with
+ | Some x => map (f x) b
+ | _ => None
+ end.
+
+End Option.
+
+Parameter debug_print : string -> unit.
+
+Definition debug_show {A B : Type} `{Show A} (a : A) (b : B) : B :=
+ let unused := debug_print (show a) in b.
+
+Definition debug_show_msg {A B : Type} `{Show A} (s : string) (a : A) (b : B) : B :=
+ let unused := debug_print (s ++ show a) in b.
diff --git a/src/common/Helper.v b/src/common/Helper.v
deleted file mode 100644
index d23dbe4..0000000
--- a/src/common/Helper.v
+++ /dev/null
@@ -1,39 +0,0 @@
-(*
- * CoqUp: Verified high-level synthesis.
- * Copyright (C) 2019-2020 Yann Herklotz <yann@yannherklotz.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
- *)
-
-Module Option.
-
-Definition default {T : Type} (x : T) (u : option T) : T :=
- match u with
- | Some y => y
- | _ => x
- end.
-
-Definition map {S : Type} {T : Type} (f : S -> T) (u : option S) : option T :=
- match u with
- | Some y => Some (f y)
- | _ => None
- end.
-
-Definition liftA2 {T : Type} (f : T -> T -> T) (a : option T) (b : option T) : option T :=
- match a with
- | Some x => map (f x) b
- | _ => None
- end.
-
-End Option.
diff --git a/src/common/Show.v b/src/common/Show.v
index 8f9ec36..c994df3 100644
--- a/src/common/Show.v
+++ b/src/common/Show.v
@@ -19,43 +19,50 @@
From Coq Require Import
Strings.String
Bool.Bool
- Arith.Arith.
+ Arith.Arith
+ ZArith.ZArith.
Local Open Scope string.
-Module Show.
- Class Show A : Type :=
- {
- show : A -> string
- }.
-
- Instance showBool : Show bool :=
- {
- show := fun b:bool => if b then "true" else "false"
- }.
-
- Fixpoint string_of_nat_aux (time n : nat) (acc : string) : string :=
- let d := match n mod 10 with
- | 0 => "0" | 1 => "1" | 2 => "2" | 3 => "3" | 4 => "4" | 5 => "5"
- | 6 => "6" | 7 => "7" | 8 => "8" | _ => "9"
- end in
- let acc' := d ++ acc in
- match time with
+Class Show A : Type :=
+ {
+ show : A -> string
+ }.
+
+Instance showBool : Show bool :=
+ {
+ show := fun b:bool => if b then "true" else "false"
+ }.
+
+Fixpoint string_of_nat_aux (time n : nat) (acc : string) : string :=
+ let d := match n mod 10 with
+ | 0 => "0" | 1 => "1" | 2 => "2" | 3 => "3" | 4 => "4" | 5 => "5"
+ | 6 => "6" | 7 => "7" | 8 => "8" | _ => "9"
+ end in
+ let acc' := d ++ acc in
+ match time with
+ | 0 => acc'
+ | S time' =>
+ match n / 10 with
| 0 => acc'
- | S time' =>
- match n / 10 with
- | 0 => acc'
- | n' => string_of_nat_aux time' n' acc'
- end
- end.
-
- Definition string_of_nat (n : nat) : string :=
- string_of_nat_aux n n "".
-
- Instance showNat : Show nat :=
- {
- show := string_of_nat
- }.
-
-End Show.
-Export Show.
+ | n' => string_of_nat_aux time' n' acc'
+ end
+ end.
+
+Definition string_of_nat (n : nat) : string :=
+ string_of_nat_aux n n "".
+
+Instance showNat : Show nat :=
+ {
+ show := string_of_nat
+ }.
+
+Instance showZ : Show Z :=
+ {
+ show a := show (Z.to_nat a)
+ }.
+
+Instance showPositive : Show positive :=
+ {
+ show a := show (Zpos a)
+ }.