combined techniques for synthesis conjectures that are partially single invocation
option cegqiSingleInvReconstruct --cegqi-si-reconstruct bool :default true
reconstruct solutions for single invocation conjectures in original grammar
+option cegqiSolMinCore --cegqi-si-sol-min-core bool :default false
+ minimize solutions for single invocation conjectures based on unsat core
option cegqiSingleInvReconstructConst --cegqi-si-reconstruct-const bool :default true
include constants when reconstruct solutions for single invocation conjectures in original grammar
option cegqiSingleInvAbort --cegqi-si-abort bool :default false
Trace("csi-sol") << "Sort solution return values " << sol_index << std::endl;
bool useUnsatCore = false;
std::vector< Node > active_lemmas;
- /* TODO?
//minimize based on unsat core, if possible
- std::vector< Node > active_lemmas;
- if( d_qe->getUnsatCoreLemmas( active_lemmas ) ){
+ if( options::cegqiSolMinCore() && d_qe->getUnsatCoreLemmas( active_lemmas ) ){
useUnsatCore = true;
}
- */
Assert( d_lemmas_produced.size()==d_inst.size() );
std::vector< unsigned > indices;
for( unsigned i=0; i<d_lemmas_produced.size(); i++ ){
}
bool QuantifiersEngine::getUnsatCoreLemmas( std::vector< Node >& active_lemmas ) {
- //TODO: only if unsat core available
+ //only if unsat core available
bool isUnsatCoreAvailable = false;
- //if( options::proof() ){
- //}
+ if( options::proof() ){
+ isUnsatCoreAvailable = ProofManager::currentPM()->unsatCoreAvailable();
+ }
if( isUnsatCoreAvailable ){
Trace("inst-unsat-core") << "Get instantiations in unsat core..." << std::endl;
ProofManager::currentPM()->getLemmasInUnsatCore(theory::THEORY_QUANTIFIERS, active_lemmas);