summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-06-01 15:29:05 -0500
committerGitHub <noreply@github.com>2018-06-01 15:29:05 -0500
commita8c785aaadae1f5316e8e12455b362c468db4106 (patch)
treeb20875279c6d698acb7af76121244d07d47ba342 /src
parentb0fd7761fc36fc53141cb1486e9cb19dd00ae5f3 (diff)
Apply preprocessing to counterexample lemmas in CEGQI (#2027)
Diffstat (limited to 'src')
-rw-r--r--src/theory/quantifiers/cegqi/ceg_instantiator.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/theory/quantifiers/cegqi/ceg_instantiator.cpp b/src/theory/quantifiers/cegqi/ceg_instantiator.cpp
index 72633e86f..9dd0bdb04 100644
--- a/src/theory/quantifiers/cegqi/ceg_instantiator.cpp
+++ b/src/theory/quantifiers/cegqi/ceg_instantiator.cpp
@@ -1475,6 +1475,9 @@ void CegInstantiator::registerCounterexampleLemma( std::vector< Node >& lems, st
Trace("cbqi-debug") << "Counterexample lemma (pre-rewrite) " << i << " : " << lems[i] << std::endl;
Node rlem = lems[i];
rlem = Rewriter::rewrite( rlem );
+ // also must preprocess to ensure that the counterexample atoms we
+ // collect below are identical to the atoms that we add to the CNF stream
+ rlem = d_qe->getTheoryEngine()->preprocess(rlem);
Trace("cbqi-debug") << "Counterexample lemma (post-rewrite) " << i << " : " << rlem << std::endl;
//record the literals that imply auxiliary variables to be equal to terms
if( lems[i].getKind()==ITE && rlem.getKind()==ITE ){
@@ -1498,7 +1501,6 @@ void CegInstantiator::registerCounterexampleLemma( std::vector< Node >& lems, st
}*/
lems[i] = rlem;
}
-
// determine variable order: must do Reals before Ints
Trace("cbqi-debug") << "Determine variable order..." << std::endl;
if (!d_vars.empty())
@@ -1546,7 +1548,8 @@ void CegInstantiator::registerCounterexampleLemma( std::vector< Node >& lems, st
}
}
- //collect atoms from all lemmas: we will only do bounds coming from original body
+ // collect atoms from all lemmas: we will only solve for literals coming from
+ // the original body
d_is_nested_quant = false;
std::map< Node, bool > visited;
for( unsigned i=0; i<lems.size(); i++ ){
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback