diff options
author | Ying Sheng <sqy1415@gmail.com> | 2019-12-16 11:42:36 -0800 |
---|---|---|
committer | Andres Noetzli <andres.noetzli@gmail.com> | 2019-12-16 11:42:36 -0800 |
commit | 49f0f09c6ef1c04fcd5b088456cea9998cff3c91 (patch) | |
tree | 0d5746c90c1e7ca3e336a8cfc7417b05c0eecbe8 /test/regress/regress0/bv | |
parent | c101a6b42d1f14bc750fb2328ddd83261148d7ae (diff) |
Support ackermannization on uninterpreted sorts in BV (#3372)
Support ackermannization on uninterpreted sorts in BV. For uninterpreted sorts, we create a bit-vector sort to replace it. For an uninterpreted sort `S`, if the number of variables within sort `S` is `n`, the replacing bit-vector will have size (log n)+1.
Diffstat (limited to 'test/regress/regress0/bv')
-rw-r--r-- | test/regress/regress0/bv/ackermann5.smt2 | 31 | ||||
-rw-r--r-- | test/regress/regress0/bv/ackermann6.smt2 | 31 | ||||
-rw-r--r-- | test/regress/regress0/bv/ackermann7.smt2 | 26 | ||||
-rw-r--r-- | test/regress/regress0/bv/ackermann8.smt2 | 26 |
4 files changed, 114 insertions, 0 deletions
diff --git a/test/regress/regress0/bv/ackermann5.smt2 b/test/regress/regress0/bv/ackermann5.smt2 new file mode 100644 index 000000000..d29311109 --- /dev/null +++ b/test/regress/regress0/bv/ackermann5.smt2 @@ -0,0 +1,31 @@ +; COMMAND-LINE: --ackermann --no-check-models --no-check-proofs --no-check-unsat-cores +; EXPECT: sat +(set-logic QF_UFBV) + +(declare-sort S 0) +(declare-sort T 0) + +(declare-fun s1 () S) +(declare-fun s2 () S) +(declare-fun t1 () T) +(declare-fun t2 () T) + +(declare-fun a () (_ BitVec 4)) +(declare-fun b () (_ BitVec 4)) + +(declare-fun f (S) (_ BitVec 4)) +(declare-fun g (S) S) +(declare-fun h (T) S) +(declare-fun i (T) T) + +(assert (= (f s1) (bvand a b))) +(assert (= (f s2) (bvand a b))) + +(assert (= (f (g s1)) (f (h (i t1))))) +(assert (= (f (g (h (i t2)))) (f (h (i t2))))) +(assert (= t1 t2)) +(assert (= s1 (h (i t2)))) + +(check-sat) +(exit) + diff --git a/test/regress/regress0/bv/ackermann6.smt2 b/test/regress/regress0/bv/ackermann6.smt2 new file mode 100644 index 000000000..846339f52 --- /dev/null +++ b/test/regress/regress0/bv/ackermann6.smt2 @@ -0,0 +1,31 @@ +; COMMAND-LINE: --ackermann --no-check-models --no-check-proofs --no-check-unsat-cores +; EXPECT: unsat +(set-logic QF_UFBV) + +(declare-sort S 0) +(declare-sort T 0) + +(declare-fun s1 () S) +(declare-fun s2 () S) +(declare-fun t1 () T) +(declare-fun t2 () T) + +(declare-fun a () (_ BitVec 4)) +(declare-fun b () (_ BitVec 4)) + +(declare-fun f (S) (_ BitVec 4)) +(declare-fun g (S) S) +(declare-fun h (T) S) +(declare-fun i (T) T) + +(assert (= (f s1) (bvand a b))) +(assert (= (f s2) (bvand a b))) + +(assert (= (f (g s1)) (f (h (i t1))))) +(assert (not (= (f (g (h (i t2)))) (f (h (i t2)))))) +(assert (= t1 t2)) +(assert (= s1 (h (i t2)))) + +(check-sat) +(exit) + diff --git a/test/regress/regress0/bv/ackermann7.smt2 b/test/regress/regress0/bv/ackermann7.smt2 new file mode 100644 index 000000000..174ad747a --- /dev/null +++ b/test/regress/regress0/bv/ackermann7.smt2 @@ -0,0 +1,26 @@ +; COMMAND-LINE: --ackermann --no-check-models --no-check-proofs --no-check-unsat-cores +; EXPECT: sat +(set-logic QF_UFBV) + +(declare-sort S 0) +(declare-sort T 0) + +(declare-fun s1 () S) +(declare-fun s2 () S) +(declare-fun s3 () S) + +(declare-fun t1 () T) +(declare-fun t2 () T) +(declare-fun t3 () T) + +(assert (not (= s1 s2))) +(assert (not (= s2 s3))) +(assert (not (= s3 s1))) + +(assert (not (= t1 t2))) +(assert (not (= t2 t3))) +(assert (not (= t3 t1))) + +(check-sat) +(exit) + diff --git a/test/regress/regress0/bv/ackermann8.smt2 b/test/regress/regress0/bv/ackermann8.smt2 new file mode 100644 index 000000000..2a424e085 --- /dev/null +++ b/test/regress/regress0/bv/ackermann8.smt2 @@ -0,0 +1,26 @@ +; COMMAND-LINE: --ackermann --no-check-models --no-check-proofs --no-check-unsat-cores +; EXPECT: unsat +(set-logic QF_UFBV) + +(declare-sort S 0) +(declare-sort T 0) + +(declare-fun s1 () S) +(declare-fun s2 () S) +(declare-fun s3 () S) + +(declare-fun a () (_ BitVec 1)) +(declare-fun b () (_ BitVec 1)) +(declare-fun c () (_ BitVec 1)) + +(assert (not (= s1 s2))) +(assert (not (= s2 s3))) +(assert (not (= s3 s1))) + +(assert (not (= a b))) +(assert (not (= b c))) +(assert (not (= c a))) + +(check-sat) +(exit) + |