summaryrefslogtreecommitdiff
path: root/test/smt
diff options
context:
space:
mode:
authorAlasdair Armstrong2019-05-28 17:13:44 +0100
committerAlasdair Armstrong2019-05-28 17:13:44 +0100
commit5f3e0d30ad5906e343094e46eed9ed1456b30c9a (patch)
tree51009725373cf70d4bf2859c6a0452962816a01c /test/smt
parentc8665edc57e755d4151c2af092a1058def5bf0ca (diff)
SMT: Add min and max functions
Allow conversion between int(n) and int in smt_conversion
Diffstat (limited to 'test/smt')
-rw-r--r--test/smt/minmax.unsat.sail20
-rw-r--r--test/smt/minmax_1.sat.sail12
-rw-r--r--test/smt/minmax_2.sat.sail12
3 files changed, 44 insertions, 0 deletions
diff --git a/test/smt/minmax.unsat.sail b/test/smt/minmax.unsat.sail
new file mode 100644
index 00000000..f1bdf55a
--- /dev/null
+++ b/test/smt/minmax.unsat.sail
@@ -0,0 +1,20 @@
+
+val operator == = "eq_int" : (int, int) -> bool
+
+val "max_int" : (int, int) -> int
+
+val "min_int" : (int, int) -> int
+
+$property
+function prop(a: int, b: int) -> bool = {
+ assert(max_int(3, 2) == 3);
+ assert(min_int(3, 2) == 2);
+ assert(max_int(-132542345, 3) == 3);
+
+ assert(max_int(a, b) == max_int(b, a));
+ assert(min_int(a, b) == min_int(b, a));
+
+ assert(max_int(0, 0) == 0);
+
+ true
+}
diff --git a/test/smt/minmax_1.sat.sail b/test/smt/minmax_1.sat.sail
new file mode 100644
index 00000000..09119db0
--- /dev/null
+++ b/test/smt/minmax_1.sat.sail
@@ -0,0 +1,12 @@
+
+val operator == = "eq_int" : (int, int) -> bool
+
+val "max_int" : (int, int) -> int
+
+val "min_int" : (int, int) -> int
+
+$counterexample
+function prop(a: int, b: int) -> bool = {
+ assert(max_int(a, a) == max_int(b, a));
+ true
+}
diff --git a/test/smt/minmax_2.sat.sail b/test/smt/minmax_2.sat.sail
new file mode 100644
index 00000000..dd773058
--- /dev/null
+++ b/test/smt/minmax_2.sat.sail
@@ -0,0 +1,12 @@
+
+val operator == = "eq_int" : (int, int) -> bool
+
+val "max_int" : (int, int) -> int
+
+val "min_int" : (int, int) -> int
+
+$counterexample
+function prop(a: int, b: int) -> bool = {
+ assert(max_int(a, b) == min_int(a, b));
+ true
+}