aboutsummaryrefslogtreecommitdiffstats
path: root/src/CoqUp
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2020-02-04 19:50:17 +0000
committerYann Herklotz <git@yannherklotz.com>2020-02-04 19:50:17 +0000
commita2c2bb945cf4e848225692f23aa337feae9747d2 (patch)
tree3d46e8904397d7937f4ba6a5f074cb4f7665cc96 /src/CoqUp
parent9179bf0a7227f49cc89b84263b6fb3229ee632b3 (diff)
downloadvericert-a2c2bb945cf4e848225692f23aa337feae9747d2.tar.gz
vericert-a2c2bb945cf4e848225692f23aa337feae9747d2.zip
Add show typeclass
Diffstat (limited to 'src/CoqUp')
-rw-r--r--src/CoqUp/Show.v42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/CoqUp/Show.v b/src/CoqUp/Show.v
new file mode 100644
index 0000000..953a5ec
--- /dev/null
+++ b/src/CoqUp/Show.v
@@ -0,0 +1,42 @@
+From Coq Require Import
+ Strings.String
+ Bool.Bool
+ Arith.Arith.
+
+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
+ | 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.