From b64d0d368634693748b267263d825af024e69a28 Mon Sep 17 00:00:00 2001
From: Arthur Correnson <arthur.correnson@gmail.com>
Date: Wed, 9 Jun 2021 11:24:15 +0200
Subject: [PATCH] Testing rouding mode intanciation

---
 src_colibri2/tests/solve/smt_fp/sat/dune.inc        |  4 ++++
 .../tests/solve/smt_fp/sat/rm_instanciation.smt2    |  7 +++++++
 .../tests/solve/smt_fp/sat/rm_universal.smt2        |  5 +++++
 src_colibri2/tests/solve/smt_fp/unsat/dune          | 13 +++++++++++++
 src_colibri2/tests/solve/smt_fp/unsat/dune.inc      |  3 +++
 .../solve/smt_fp/unsat/f32_f64_incompatible.smt2    |  5 -----
 .../tests/solve/smt_fp/unsat/inf_pos_neg_neq.smt2   |  3 +++
 7 files changed, 35 insertions(+), 5 deletions(-)
 create mode 100644 src_colibri2/tests/solve/smt_fp/sat/rm_instanciation.smt2
 create mode 100644 src_colibri2/tests/solve/smt_fp/sat/rm_universal.smt2
 create mode 100644 src_colibri2/tests/solve/smt_fp/unsat/dune
 create mode 100644 src_colibri2/tests/solve/smt_fp/unsat/dune.inc
 delete mode 100644 src_colibri2/tests/solve/smt_fp/unsat/f32_f64_incompatible.smt2
 create mode 100644 src_colibri2/tests/solve/smt_fp/unsat/inf_pos_neg_neq.smt2

diff --git a/src_colibri2/tests/solve/smt_fp/sat/dune.inc b/src_colibri2/tests/solve/smt_fp/sat/dune.inc
index 06de62e82..ec4f35a99 100644
--- a/src_colibri2/tests/solve/smt_fp/sat/dune.inc
+++ b/src_colibri2/tests/solve/smt_fp/sat/dune.inc
@@ -13,6 +13,10 @@
 (rule (alias runtest) (action (diff oracle recognize_float64.smt2.res)))
 (rule (action (with-stdout-to recognize_rounding_mode.smt2.res (run %{bin:colibri2} --max-steps 3000 %{dep:recognize_rounding_mode.smt2}))))
 (rule (alias runtest) (action (diff oracle recognize_rounding_mode.smt2.res)))
+(rule (action (with-stdout-to rm_instanciation.smt2.res (run %{bin:colibri2} --max-steps 3000 %{dep:rm_instanciation.smt2}))))
+(rule (alias runtest) (action (diff oracle rm_instanciation.smt2.res)))
+(rule (action (with-stdout-to rm_universal.smt2.res (run %{bin:colibri2} --max-steps 3000 %{dep:rm_universal.smt2}))))
+(rule (alias runtest) (action (diff oracle rm_universal.smt2.res)))
 (rule (action (with-stdout-to simple_add_float32.smt2.res (run %{bin:colibri2} --max-steps 3000 %{dep:simple_add_float32.smt2}))))
 (rule (alias runtest) (action (diff oracle simple_add_float32.smt2.res)))
 (rule (action (with-stdout-to simple_eq_float32.smt2.res (run %{bin:colibri2} --max-steps 3000 %{dep:simple_eq_float32.smt2}))))
diff --git a/src_colibri2/tests/solve/smt_fp/sat/rm_instanciation.smt2 b/src_colibri2/tests/solve/smt_fp/sat/rm_instanciation.smt2
new file mode 100644
index 000000000..f88199943
--- /dev/null
+++ b/src_colibri2/tests/solve/smt_fp/sat/rm_instanciation.smt2
@@ -0,0 +1,7 @@
+(set-logic ALL)
+(declare-fun x () (_ FloatingPoint 8 24))
+(declare-fun y () (_ FloatingPoint 8 24))
+(declare-fun m () RoundingMode)
+(assert (not (= RNE m)))
+(assert (= (fp.add m x y) x))
+(check-sat)
\ No newline at end of file
diff --git a/src_colibri2/tests/solve/smt_fp/sat/rm_universal.smt2 b/src_colibri2/tests/solve/smt_fp/sat/rm_universal.smt2
new file mode 100644
index 000000000..78a5beced
--- /dev/null
+++ b/src_colibri2/tests/solve/smt_fp/sat/rm_universal.smt2
@@ -0,0 +1,5 @@
+(set-logic ALL)
+(declare-fun x () (_ FloatingPoint 8 24))
+(declare-fun y () (_ FloatingPoint 8 24))
+(assert (forall ((m RoundingMode)) (= (fp.add m x y) x)))
+(check-sat)
\ No newline at end of file
diff --git a/src_colibri2/tests/solve/smt_fp/unsat/dune b/src_colibri2/tests/solve/smt_fp/unsat/dune
new file mode 100644
index 000000000..6d9fe5883
--- /dev/null
+++ b/src_colibri2/tests/solve/smt_fp/unsat/dune
@@ -0,0 +1,13 @@
+(include dune.inc)
+
+(rule
+ (alias runtest)
+ (deps
+  (glob_files *.cnf)
+  (glob_files *.smt2)
+  (glob_files *.psmt2))
+ (action
+  (with-stdout-to
+   dune.inc
+   (run %{exe:../../../generate_tests/generate_dune_tests.exe} . unsat)))
+ (mode promote))
diff --git a/src_colibri2/tests/solve/smt_fp/unsat/dune.inc b/src_colibri2/tests/solve/smt_fp/unsat/dune.inc
new file mode 100644
index 000000000..21f859489
--- /dev/null
+++ b/src_colibri2/tests/solve/smt_fp/unsat/dune.inc
@@ -0,0 +1,3 @@
+(rule (action (with-stdout-to oracle (echo "unsat\n"))))
+(rule (action (with-stdout-to inf_pos_neg_neq.smt2.res (run %{bin:colibri2} --max-steps 3000 %{dep:inf_pos_neg_neq.smt2}))))
+(rule (alias runtest) (action (diff oracle inf_pos_neg_neq.smt2.res)))
diff --git a/src_colibri2/tests/solve/smt_fp/unsat/f32_f64_incompatible.smt2 b/src_colibri2/tests/solve/smt_fp/unsat/f32_f64_incompatible.smt2
deleted file mode 100644
index fdc81481a..000000000
--- a/src_colibri2/tests/solve/smt_fp/unsat/f32_f64_incompatible.smt2
+++ /dev/null
@@ -1,5 +0,0 @@
-(set-logic ALL)
-(declare-fun x () (_ FloatingPoint 11 53))
-(declare-fun y () (_ FloatingPoint 8 24))
-(assert (= x y))
-(check-sat)
\ No newline at end of file
diff --git a/src_colibri2/tests/solve/smt_fp/unsat/inf_pos_neg_neq.smt2 b/src_colibri2/tests/solve/smt_fp/unsat/inf_pos_neg_neq.smt2
new file mode 100644
index 000000000..3e7669912
--- /dev/null
+++ b/src_colibri2/tests/solve/smt_fp/unsat/inf_pos_neg_neq.smt2
@@ -0,0 +1,3 @@
+(set-logic ALL)
+(assert (fp.eq (_ +oo 8 24) (_ -oo 8 24)))
+(check-sat)
\ No newline at end of file
-- 
GitLab