### proof options
-option trackInstLemmas --track-inst-lemmas bool :default true
- when proof is enabled, track instantiation lemmas (for proofs, unsat cores, qe and synthesis minimization)
+option trackInstLemmas --track-inst-lemmas bool :read-write :default false
+ track instantiation lemmas (for proofs, unsat cores, qe and synthesis minimization)
endmodule
Notice() << "SmtEngine: turning off cbqi to support instMaxLevel" << endl;
options::cbqi.set(false);
}
+ //track instantiations?
+ if( options::cbqiNestedQE() || ( options::proof() && !options::trackInstLemmas.wasSetByUser() ) ){
+ options::trackInstLemmas.set( true );
+ }
if( ( options::fmfBoundLazy.wasSetByUser() && options::fmfBoundLazy() ) ||
( options::fmfBoundInt.wasSetByUser() && options::fmfBoundInt() ) ) {
}
if( d_theoryEngine ){
d_theoryEngine->printInstantiations( out );
+ }else{
+ Assert( false );
}
if( options::instFormatMode()==INST_FORMAT_MODE_SZS ){
out << "% SZS output end Proof for " << d_filename.c_str() << std::endl;
SmtScope smts(this);
if( d_theoryEngine ){
d_theoryEngine->printSynthSolution( out );
+ }else{
+ Assert( false );
}
}
for( unsigned i=0; i<qs_n.size(); i++ ){
qs.push_back( qs_n[i].toExpr() );
}
+ }else{
+ Assert( false );
}
}
for( unsigned i=0; i<insts_n.size(); i++ ){
insts.push_back( insts_n[i].toExpr() );
}
+ }else{
+ Assert( false );
}
}
void SmtEngine::getInstantiationTermVectors( Expr q, std::vector< std::vector< Expr > >& tvecs ) {
SmtScope smts(this);
+ Assert(options::trackInstLemmas());
if( d_theoryEngine ){
std::vector< std::vector< Node > > tvecs_n;
d_theoryEngine->getInstantiationTermVectors( Node::fromExpr( q ), tvecs_n );
}
tvecs.push_back( tvec );
}
+ }else{
+ Assert( false );
}
}
d_fs = NULL;
d_rel_dom = NULL;
d_builder = NULL;
-
- d_trackInstLemmas = options::cbqiNestedQE() || ( options::proof() && options::trackInstLemmas() );
d_total_inst_count_debug = 0;
//allow theory combination to go first, once initially
}
}
}
- if( d_trackInstLemmas ){
+ if( options::trackInstLemmas() ){
bool recorded;
if( options::incrementalSolving() ){
recorded = d_c_inst_match_trie[q]->recordInstLemma( q, terms, lem );
}
void QuantifiersEngine::getExplanationForInstLemmas( std::vector< Node >& lems, std::map< Node, Node >& quant, std::map< Node, std::vector< Node > >& tvec ) {
- if( d_trackInstLemmas ){
+ if( options::trackInstLemmas() ){
if( options::incrementalSolving() ){
for( std::map< Node, inst::CDInstMatchTrie* >::iterator it = d_c_inst_match_trie.begin(); it != d_c_inst_match_trie.end(); ++it ){
it->second->getExplanationForInstLemmas( it->first, lems, quant, tvec );
void QuantifiersEngine::printInstantiations( std::ostream& out ) {
bool useUnsatCore = false;
std::vector< Node > active_lemmas;
- if( d_trackInstLemmas && getUnsatCoreLemmas( active_lemmas ) ){
+ if( options::trackInstLemmas() && getUnsatCoreLemmas( active_lemmas ) ){
useUnsatCore = true;
}
void QuantifiersEngine::getInstantiations( std::map< Node, std::vector< Node > >& insts ) {
bool useUnsatCore = false;
std::vector< Node > active_lemmas;
- if( d_trackInstLemmas && getUnsatCoreLemmas( active_lemmas ) ){
+ if( options::trackInstLemmas() && getUnsatCoreLemmas( active_lemmas ) ){
useUnsatCore = true;
}
quantifiers::QuantAntiSkolem * d_anti_skolem;
/** quantifiers instantiation propagtor */
quantifiers::InstPropagator * d_inst_prop;
-private:
- /** whether we are tracking instantiation lemmas */
- bool d_trackInstLemmas;
public: //effort levels
enum {
QEFFORT_CONFLICT,