summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-01-30 16:30:47 -0600
committerGitHub <noreply@github.com>2020-01-30 16:30:47 -0600
commita456ef81b15e2f8612cd41a31ad811af35f47846 (patch)
treee29a425f369db691a484609c400a555708a9c973
parent8c4788b6356b46df5cede71bcf02c86f0aebe86c (diff)
Fix rep set increment for empty domains (#3682)
-rw-r--r--src/theory/rep_set.cpp15
-rw-r--r--test/regress/CMakeLists.txt1
-rw-r--r--test/regress/regress1/fmf/issue3615.smt26
3 files changed, 13 insertions, 9 deletions
diff --git a/src/theory/rep_set.cpp b/src/theory/rep_set.cpp
index d293890bf..55cef5ea7 100644
--- a/src/theory/rep_set.cpp
+++ b/src/theory/rep_set.cpp
@@ -371,8 +371,8 @@ int RepSetIterator::incrementAtIndex(int i)
}
int RepSetIterator::do_reset_increment( int i, bool initial ) {
- bool emptyDomain = false;
for( unsigned ii=(i+1); ii<d_index.size(); ii++ ){
+ bool emptyDomain = false;
int ri_res = resetIndex( ii, initial );
if( ri_res==-1 ){
//failed
@@ -383,16 +383,13 @@ int RepSetIterator::do_reset_increment( int i, bool initial ) {
emptyDomain = true;
}
//force next iteration if currently an empty domain
- if( emptyDomain ){
- d_index[ii] = domainSize(ii)-1;
+ if (emptyDomain)
+ {
+ Trace("rsi-debug") << "This is an empty domain, increment." << std::endl;
+ return increment();
}
}
- if( emptyDomain ){
- Trace("rsi-debug") << "This is an empty domain, increment." << std::endl;
- return increment();
- }else{
- return i;
- }
+ return i;
}
int RepSetIterator::increment(){
diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt
index 179c5fe4c..d5414364a 100644
--- a/test/regress/CMakeLists.txt
+++ b/test/regress/CMakeLists.txt
@@ -1229,6 +1229,7 @@ set(regress_1_tests
regress1/fmf/german73.smt2
regress1/fmf/issue2034-preinit.smt2
regress1/fmf/issue3587.smt2
+ regress1/fmf/issue3615.smt2
regress1/fmf/issue3626.smt2
regress1/fmf/issue916-fmf-or.smt2
regress1/fmf/jasmin-cdt-crash.smt2
diff --git a/test/regress/regress1/fmf/issue3615.smt2 b/test/regress/regress1/fmf/issue3615.smt2
new file mode 100644
index 000000000..48ad7c7df
--- /dev/null
+++ b/test/regress/regress1/fmf/issue3615.smt2
@@ -0,0 +1,6 @@
+; COMMAND-LINE: --fmf-bound
+; EXPECT: sat
+(set-logic UFLIA)
+(declare-fun f (Int) Bool)
+(assert (forall ((x Int) (y Int)) (or (>= x 0) (<= x 0) (< y 0) (> y x) (f x))))
+(check-sat)
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback