summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/ce_guided_instantiation.cpp
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2015-08-28 13:36:44 +0200
committerajreynol <andrew.j.reynolds@gmail.com>2015-08-28 13:36:44 +0200
commit6842b50e9e59c89efc21b83faa541df069b5c333 (patch)
tree8dad5fc6558728f5945620052caa07cdc77d30bb /src/theory/quantifiers/ce_guided_instantiation.cpp
parent0ddf1b9c74f2b2a78e0960b710c2edbdc5f8d02d (diff)
Improvements to sygus, register equivalent terms based on rewrites of original conjecture, set default invariant template mode to post-condition.
Diffstat (limited to 'src/theory/quantifiers/ce_guided_instantiation.cpp')
-rw-r--r--src/theory/quantifiers/ce_guided_instantiation.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/theory/quantifiers/ce_guided_instantiation.cpp b/src/theory/quantifiers/ce_guided_instantiation.cpp
index f01efb5c4..0bc5bb008 100644
--- a/src/theory/quantifiers/ce_guided_instantiation.cpp
+++ b/src/theory/quantifiers/ce_guided_instantiation.cpp
@@ -150,6 +150,10 @@ bool CegConjecture::needsCheck() {
return d_active && !d_infeasible && ( !isSingleInvocation() || d_ceg_si->needsCheck() );
}
+void CegConjecture::preregisterConjecture( Node q ) {
+ d_ceg_si->preregisterConjecture( q );
+}
+
CegInstantiation::CegInstantiation( QuantifiersEngine * qe, context::Context* c ) : QuantifiersModule( qe ){
d_conj = new CegConjecture( qe, qe->getSatContext() );
d_last_inst_si = false;
@@ -592,6 +596,24 @@ void CegInstantiation::collectDisjuncts( Node n, std::vector< Node >& d ) {
}
}
+void CegInstantiation::preregisterAssertion( Node n ) {
+ //check if it sygus conjecture
+ if( n.getKind()==FORALL ){
+ if( n.getNumChildren()==3 ){
+ for( unsigned i=0; i<n[2].getNumChildren(); i++ ){
+ if( n[2][i].getKind()==INST_ATTRIBUTE ){
+ Node avar = n[2][i][0];
+ if( avar.getAttribute(SygusAttribute()) ){
+ //this is a sygus conjecture
+ Trace("cegqi") << "Preregister sygus conjecture : " << n << std::endl;
+ d_conj->preregisterConjecture( n );
+ }
+ }
+ }
+ }
+ }
+}
+
CegInstantiation::Statistics::Statistics():
d_cegqi_lemmas_ce("CegInstantiation::cegqi_lemmas_ce", 0),
d_cegqi_lemmas_refine("CegInstantiation::cegqi_lemmas_refine", 0),
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback