diff options
| author | Alasdair Armstrong | 2019-05-28 17:13:44 +0100 |
|---|---|---|
| committer | Alasdair Armstrong | 2019-05-28 17:13:44 +0100 |
| commit | 5f3e0d30ad5906e343094e46eed9ed1456b30c9a (patch) | |
| tree | 51009725373cf70d4bf2859c6a0452962816a01c /test/smt | |
| parent | c8665edc57e755d4151c2af092a1058def5bf0ca (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.sail | 20 | ||||
| -rw-r--r-- | test/smt/minmax_1.sat.sail | 12 | ||||
| -rw-r--r-- | test/smt/minmax_2.sat.sail | 12 |
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 +} |
