Minor fix for CBQI, ignore inst constant nodes.
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 20 Mar 2014 21:10:04 +0000 (16:10 -0500)
committerAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 20 Mar 2014 21:10:04 +0000 (16:10 -0500)
src/theory/quantifiers/inst_strategy_e_matching.cpp

index f60e01a7dac24578156a4fc49d8d4fa3bd2f3aa0..0353b0b5f06614afdef0d2364e6aae1c21c3229d 100644 (file)
@@ -389,6 +389,14 @@ int InstStrategyFreeVariable::process( Node f, Theory::Effort effort, int e ){
               }else{
                 Assert( index==(int)(childIndex.size())-1 );
                 unsigned nv = childIndex[index]+1;
+                if( options::cbqi() ){
+                  //skip inst constant nodes
+                  while( nv<maxs[index] && nv<=max_i &&
+                         r==1 && quantifiers::TermDb::hasInstConstAttr( d_quantEngine->getTermDatabase()->d_type_map[f[0][index].getType()][nv] ) ){
+                    childIndex[index]++;
+                    nv = childIndex[index]+1;
+                  }
+                }
                 if( nv<maxs[index] && nv<=max_i ){
                   childIndex[index]++;
                   index++;