From dcd621fb9e54cc60d9fab354312fe04e4aab5d93 Mon Sep 17 00:00:00 2001 From: Kshitij Bansal Date: Wed, 11 Jun 2014 12:09:39 -0400 Subject: [PATCH] fix in sets rewriter --- src/theory/sets/theory_sets_rewriter.cpp | 4 - test/regress/regress0/sets/Makefile.am | 1 + test/regress/regress0/sets/fuzz15201.smt2 | 269 ++++++++++++++++++++++ 3 files changed, 270 insertions(+), 4 deletions(-) create mode 100644 test/regress/regress0/sets/fuzz15201.smt2 diff --git a/src/theory/sets/theory_sets_rewriter.cpp b/src/theory/sets/theory_sets_rewriter.cpp index bcfbc46ae..7b02c1bfb 100644 --- a/src/theory/sets/theory_sets_rewriter.cpp +++ b/src/theory/sets/theory_sets_rewriter.cpp @@ -117,10 +117,6 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) { node[1].getKind() == kind::EMPTYSET) { Trace("sets-postrewrite") << "Sets::postRewrite returning " << node[0] << std::endl; return RewriteResponse(REWRITE_DONE, node[0]); - } else if (node[0] > node[1]) { - Node newNode = nm->mkNode(node.getKind(), node[1], node[0]); - Trace("sets-postrewrite") << "Sets::postRewrite returning " << newNode << std::endl; - return RewriteResponse(REWRITE_DONE, newNode); } break; }//kind::INTERSECION diff --git a/test/regress/regress0/sets/Makefile.am b/test/regress/regress0/sets/Makefile.am index 07006d6c3..8516dbc0c 100644 --- a/test/regress/regress0/sets/Makefile.am +++ b/test/regress/regress0/sets/Makefile.am @@ -45,6 +45,7 @@ TESTS = \ error1.smt2 \ error2.smt2 \ eqtest.smt2 \ + fuzz15201.smt2 \ rec_copy_loop_check_heap_access_43_4.smt2 \ sets-disequal.smt2 \ sets-equal.smt2 \ diff --git a/test/regress/regress0/sets/fuzz15201.smt2 b/test/regress/regress0/sets/fuzz15201.smt2 new file mode 100644 index 000000000..8ddeb36d2 --- /dev/null +++ b/test/regress/regress0/sets/fuzz15201.smt2 @@ -0,0 +1,269 @@ +; symptom: unsat instead of sat +; issue/fix: buggy rewriter for setminus +(set-info :source |fuzzsmt|) +(set-info :smt-lib-version 2.0) +(set-info :category "random") +(set-info :status sat) +(set-logic QF_UFLIA_SETS) +(define-sort Element () Int) +(declare-fun f0 ( Int) Int) +(declare-fun f1 ( (Set Element)) (Set Element)) +(declare-fun p0 ( Int) Bool) +(declare-fun p1 ( (Set Element) (Set Element) (Set Element)) Bool) +(declare-fun v0 () Int) +(declare-fun v1 () (Set Element)) +(declare-fun v2 () (Set Element)) +(assert (let ((e3 0)) +(let ((e4 (+ v0 v0))) +(let ((e5 (+ v0 e4))) +(let ((e6 (* (- e3) e4))) +(let ((e7 (- e4 e6))) +(let ((e8 (+ e7 e5))) +(let ((e9 (- v0))) +(let ((e10 (* e6 e3))) +(let ((e11 (- e8 e5))) +(let ((e12 (- e5))) +(let ((e13 (* e7 (- e3)))) +(let ((e14 (f0 e7))) +(let ((e15 (ite (p0 e9) 1 0))) +(let ((e16 (setminus v2 v1))) +(let ((e17 (setminus v1 v2))) +(let ((e18 (union e17 e17))) +(let ((e19 (intersection e17 v1))) +(let ((e20 (intersection e17 e18))) +(let ((e21 (intersection v1 e16))) +(let ((e22 (setminus e20 e16))) +(let ((e23 (ite (p1 v2 e18 e21) (setenum 1) (setenum 0)))) +(let ((e24 (setminus e17 e23))) +(let ((e25 (union v2 e22))) +(let ((e26 (union e24 e18))) +(let ((e27 (ite (p1 e20 e19 e25) (setenum 1) (setenum 0)))) +(let ((e28 (f1 e20))) +(let ((e29 (in e14 e17))) +(let ((e30 (in e13 e23))) +(let ((e31 (in e11 e25))) +(let ((e32 (in e6 v1))) +(let ((e33 (in e9 v1))) +(let ((e34 (in v0 e28))) +(let ((e35 (in e9 e16))) +(let ((e36 (in e4 e17))) +(let ((e37 (in e9 e18))) +(let ((e38 (in e14 e25))) +(let ((e39 (in e14 v2))) +(let ((e40 (in v0 v1))) +(let ((e41 (in e4 e16))) +(let ((e42 (in e15 e21))) +(let ((e43 (in e7 e22))) +(let ((e44 (in e11 v2))) +(let ((e45 (in e14 e22))) +(let ((e46 (in e11 e16))) +(let ((e47 (in e15 e22))) +(let ((e48 (in e10 e23))) +(let ((e49 (in e4 e21))) +(let ((e50 (in e5 e28))) +(let ((e51 (in e6 e28))) +(let ((e52 (in v0 e22))) +(let ((e53 (in e14 e20))) +(let ((e54 (f1 e21))) +(let ((e55 (f1 e28))) +(let ((e56 (f1 e27))) +(let ((e57 (f1 e17))) +(let ((e58 (f1 e22))) +(let ((e59 (f1 e26))) +(let ((e60 (f1 e19))) +(let ((e61 (f1 v1))) +(let ((e62 (f1 e24))) +(let ((e63 (f1 e20))) +(let ((e64 (f1 e23))) +(let ((e65 (f1 v2))) +(let ((e66 (f1 e25))) +(let ((e67 (f1 e62))) +(let ((e68 (f1 e18))) +(let ((e69 (f1 e18))) +(let ((e70 (f1 e23))) +(let ((e71 (f1 e55))) +(let ((e72 (f1 e26))) +(let ((e73 (f1 e16))) +(let ((e74 (= e13 e13))) +(let ((e75 (p0 e11))) +(let ((e76 (distinct e15 e4))) +(let ((e77 (> e14 e10))) +(let ((e78 (= e4 e15))) +(let ((e79 (distinct v0 e9))) +(let ((e80 (= e15 e14))) +(let ((e81 (>= e10 e11))) +(let ((e82 (distinct e9 e8))) +(let ((e83 (p0 v0))) +(let ((e84 (>= e12 e14))) +(let ((e85 (distinct e7 e13))) +(let ((e86 (<= e6 e11))) +(let ((e87 (= e13 e10))) +(let ((e88 (>= e7 e8))) +(let ((e89 (<= v0 e10))) +(let ((e90 (>= e5 e15))) +(let ((e91 (ite e33 e66 e26))) +(let ((e92 (ite e88 e54 v1))) +(let ((e93 (ite e76 e70 e16))) +(let ((e94 (ite e85 e19 e24))) +(let ((e95 (ite e88 e68 e20))) +(let ((e96 (ite e86 e25 e65))) +(let ((e97 (ite e83 v2 e23))) +(let ((e98 (ite e50 e63 e63))) +(let ((e99 (ite e48 e56 e93))) +(let ((e100 (ite e38 e60 v2))) +(let ((e101 (ite e30 e61 e61))) +(let ((e102 (ite e85 e69 e57))) +(let ((e103 (ite e83 e18 e102))) +(let ((e104 (ite e43 e62 e97))) +(let ((e105 (ite e76 e27 e21))) +(let ((e106 (ite e89 e92 e55))) +(let ((e107 (ite e46 e72 e65))) +(let ((e108 (ite e79 e71 e97))) +(let ((e109 (ite e44 e64 e21))) +(let ((e110 (ite e33 e70 e25))) +(let ((e111 (ite e43 e63 e105))) +(let ((e112 (ite e39 e56 e108))) +(let ((e113 (ite e49 e17 e107))) +(let ((e114 (ite e74 e63 e113))) +(let ((e115 (ite e84 e28 v1))) +(let ((e116 (ite e82 e68 e67))) +(let ((e117 (ite e75 e73 e21))) +(let ((e118 (ite e36 e59 e16))) +(let ((e119 (ite e48 e118 e61))) +(let ((e120 (ite e90 e56 e100))) +(let ((e121 (ite e80 e24 e25))) +(let ((e122 (ite e31 e22 v2))) +(let ((e123 (ite e45 e107 e16))) +(let ((e124 (ite e40 e70 e73))) +(let ((e125 (ite e52 e58 e118))) +(let ((e126 (ite e88 e72 e72))) +(let ((e127 (ite e35 e58 e27))) +(let ((e128 (ite e42 e59 e21))) +(let ((e129 (ite e44 e127 e103))) +(let ((e130 (ite e51 e118 e69))) +(let ((e131 (ite e37 e16 e24))) +(let ((e132 (ite e83 e105 e28))) +(let ((e133 (ite e48 e107 e60))) +(let ((e134 (ite e34 e101 e22))) +(let ((e135 (ite e86 e97 e57))) +(let ((e136 (ite e47 e94 e100))) +(let ((e137 (ite e78 e104 e95))) +(let ((e138 (ite e75 e26 e96))) +(let ((e139 (ite e35 e97 e121))) +(let ((e140 (ite e44 e112 e118))) +(let ((e141 (ite e77 e107 e56))) +(let ((e142 (ite e53 e64 e129))) +(let ((e143 (ite e48 e128 e23))) +(let ((e144 (ite e50 e73 e17))) +(let ((e145 (ite e33 e98 e114))) +(let ((e146 (ite e32 e137 e105))) +(let ((e147 (ite e41 e98 e96))) +(let ((e148 (ite e29 e93 e121))) +(let ((e149 (ite e87 e104 e21))) +(let ((e150 (ite e46 e131 e110))) +(let ((e151 (ite e81 e25 e65))) +(let ((e152 (ite e34 e10 e10))) +(let ((e153 (ite e36 e7 e13))) +(let ((e154 (ite e43 e12 e10))) +(let ((e155 (ite e50 e14 e7))) +(let ((e156 (ite e34 e9 e6))) +(let ((e157 (ite e33 e7 v0))) +(let ((e158 (ite e50 e157 e10))) +(let ((e159 (ite e51 e8 e11))) +(let ((e160 (ite e32 v0 e157))) +(let ((e161 (ite e85 e15 e158))) +(let ((e162 (ite e43 e5 e11))) +(let ((e163 (ite e76 e4 v0))) +(let ((e164 (ite e53 e10 e159))) +(let ((e165 (ite e80 e161 e163))) +(let ((e166 (ite e78 e13 e11))) +(let ((e167 (ite e49 e4 e8))) +(let ((e168 (ite e45 e11 e155))) +(let ((e169 (ite e81 e155 e166))) +(let ((e170 (ite e87 e169 e161))) +(let ((e171 (ite e53 e165 e13))) +(let ((e172 (ite e83 e12 e160))) +(let ((e173 (ite e80 e168 e159))) +(let ((e174 (ite e46 e171 e168))) +(let ((e175 (ite e74 e5 e155))) +(let ((e176 (ite e89 e159 e4))) +(let ((e177 (ite e29 e159 e172))) +(let ((e178 (ite e79 e165 e162))) +(let ((e179 (ite e88 e166 e168))) +(let ((e180 (ite e77 e175 e167))) +(let ((e181 (ite e47 e157 e165))) +(let ((e182 (ite e84 e172 e7))) +(let ((e183 (ite e30 e174 e157))) +(let ((e184 (ite e90 e4 e14))) +(let ((e185 (ite e38 e178 e14))) +(let ((e186 (ite e44 e166 e154))) +(let ((e187 (ite e42 e162 e186))) +(let ((e188 (ite e86 e187 e10))) +(let ((e189 (ite e29 e171 e182))) +(let ((e190 (ite e77 e185 e165))) +(let ((e191 (ite e75 e171 e9))) +(let ((e192 (ite e39 e161 e181))) +(let ((e193 (ite e82 e166 e10))) +(let ((e194 (ite e31 e183 e179))) +(let ((e195 (ite e44 e191 e169))) +(let ((e196 (ite e35 e171 e156))) +(let ((e197 (ite e86 e179 e164))) +(let ((e198 (ite e41 e5 e5))) +(let ((e199 (ite e85 e160 e161))) +(let ((e200 (ite e52 e173 e157))) +(let ((e201 (ite e47 e161 e4))) +(let ((e202 (ite e52 e6 e186))) +(let ((e203 (ite e45 e162 e198))) +(let ((e204 (ite e48 e194 e11))) +(let ((e205 (ite e37 e197 e157))) +(let ((e206 (ite e35 e153 e176))) +(let ((e207 (ite e40 e185 e188))) +(let ((e208 (= e53 e41))) +(let ((e209 (not e79))) +(let ((e210 (= e30 e87))) +(let ((e211 (or e34 e48))) +(let ((e212 (=> e82 e29))) +(let ((e213 (xor e77 e211))) +(let ((e214 (and e31 e78))) +(let ((e215 (ite e36 e76 e37))) +(let ((e216 (= e84 e45))) +(let ((e217 (or e43 e46))) +(let ((e218 (and e88 e40))) +(let ((e219 (not e89))) +(let ((e220 (not e35))) +(let ((e221 (or e218 e213))) +(let ((e222 (xor e216 e75))) +(let ((e223 (ite e85 e90 e219))) +(let ((e224 (= e32 e217))) +(let ((e225 (not e39))) +(let ((e226 (xor e212 e49))) +(let ((e227 (and e222 e81))) +(let ((e228 (or e33 e210))) +(let ((e229 (xor e225 e226))) +(let ((e230 (xor e74 e47))) +(let ((e231 (= e220 e38))) +(let ((e232 (xor e231 e229))) +(let ((e233 (and e50 e221))) +(let ((e234 (and e42 e224))) +(let ((e235 (xor e223 e214))) +(let ((e236 (= e234 e228))) +(let ((e237 (and e227 e235))) +(let ((e238 (not e51))) +(let ((e239 (= e80 e232))) +(let ((e240 (or e230 e86))) +(let ((e241 (not e238))) +(let ((e242 (xor e44 e237))) +(let ((e243 (= e236 e242))) +(let ((e244 (= e209 e240))) +(let ((e245 (and e239 e83))) +(let ((e246 (or e208 e245))) +(let ((e247 (=> e215 e246))) +(let ((e248 (ite e233 e247 e244))) +(let ((e249 (and e248 e241))) +(let ((e250 (=> e243 e249))) +(let ((e251 (and e52 e250))) +e251 +)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) + +(check-sat) +;(get-model) -- 2.30.2