aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Campbell <Brian.Campbell@ed.ac.uk>2018-12-20 16:56:21 +0000
committerBrian Campbell <Brian.Campbell@ed.ac.uk>2019-01-02 13:12:17 +0000
commitdc6f48b574c4215e46b79612a01d0c203698e3f8 (patch)
treed0571af4450fc17b9ac629d057a02569a0b5e01b
parentcd6d793698133a6282e7d380a393cc9ee48dd464 (diff)
downloadsail-riscv-dc6f48b574c4215e46b79612a01d0c203698e3f8.zip
sail-riscv-dc6f48b574c4215e46b79612a01d0c203698e3f8.tar.gz
sail-riscv-dc6f48b574c4215e46b79612a01d0c203698e3f8.tar.bz2
Note Coq externals for min/max_nat, add workaround for Coq issue
-rw-r--r--prelude.sail4
-rw-r--r--riscv_extras.v10
2 files changed, 12 insertions, 2 deletions
diff --git a/prelude.sail b/prelude.sail
index 20951af..c0e93e9 100644
--- a/prelude.sail
+++ b/prelude.sail
@@ -956,11 +956,11 @@ val lor_int = "lor_int" : (int, int) -> int
val land_int = "land_int" : (int, int) -> int
val lxor_int = "lxor_int" : (int, int) -> int
-val min_nat = {ocaml: "min_int", lem: "min", c: "min_int"} : (nat, nat) -> nat
+val min_nat = {ocaml: "min_int", lem: "min", coq: "min_nat", c: "min_int"} : (nat, nat) -> nat
val min_int = {ocaml: "min_int", lem: "min", coq: "Z.min", c: "min_int"} : (int, int) -> int
-val max_nat = {ocaml: "max_int", lem: "max", c: "max_int"} : (nat, nat) -> nat
+val max_nat = {ocaml: "max_int", lem: "max", coq: "max_nat", c: "max_int"} : (nat, nat) -> nat
val max_int = {ocaml: "max_int", lem: "max", coq: "Z.max", c: "max_int"} : (int, int) -> int
diff --git a/riscv_extras.v b/riscv_extras.v
index 820e3f3..6de320d 100644
--- a/riscv_extras.v
+++ b/riscv_extras.v
@@ -132,3 +132,13 @@ Definition prerr_string (_:string) : unit := tt.
Definition putchar {T} (_:T) : unit := tt.
Require DecimalString.
Definition string_of_int z := DecimalString.NilZero.string_of_int (Z.to_int z).
+
+(* The constraint solver can do this itself, but a Coq bug puts
+ anonymous_subproof into the term instead of an actual subproof. *)
+Lemma n_leading_spaces_fact {w__0} :
+ w__0 >= 0 -> exists ex17629_ : Z, 1 + w__0 = 1 + ex17629_ /\ 0 <= ex17629_.
+intro.
+exists w__0.
+omega.
+Qed.
+Hint Resolve n_leading_spaces_fact : sail.