trywith 10 --finite-model-find --disable-uf-ss-min-model --sort-inference --uf-ss-fair
trywith 30 --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair
finishwith --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair --mbqi-one-inst-per-round
-echo "% SZS status" "GaveUp for $filename"
+# echo "% SZS status" "GaveUp for $filename"
function trywith {
limit=$1; shift;
echo "--- Run $@ at $limit...";
- (ulimit -t "$limit";$cvc4 --no-checking --no-interactive --dump-instantiations --inst-format=szs "$@" $bench) 2>/dev/null |
+ (ulimit -t "$limit";$cvc4 --no-checking --no-interactive "$@" $bench) 2>/dev/null |
(read w1 w2 w3 result w4 w5;
case "$result" in
Unsatisfiable) echo "$w1 $w2 $w3 $result $w4 $w5";cat;exit 0;;
trywith 30 --full-saturate-quant
trywith 60 --quant-cf --full-saturate-quant
finishwith --cbqi-recurse --full-saturate-quant --pre-skolem-quant
-echo "% SZS status" "GaveUp for $filename"
+# echo "% SZS status" "GaveUp for $filename"
}else{
if( d_active_add ){
Trace("active-add") << "Active Adding instantiation " << m << std::endl;
- success = qe->addInstantiation( f, m );
+ success = qe->addInstantiation( f, m, false );
Trace("active-add") << "Success = " << success << std::endl;
}
}
void InstMatchGeneratorSimple::addInstantiations( InstMatch& m, QuantifiersEngine* qe, int& addedLemmas, int argIndex, quantifiers::TermArgTrie* tat ){
Debug("simple-trigger-debug") << "Add inst " << argIndex << " " << d_match_pattern << std::endl;
if( argIndex==(int)d_match_pattern.getNumChildren() ){
- //m is an instantiation
- if( qe->addInstantiation( d_f, m ) ){
+ Assert( !tat->d_data.empty() );
+ Node t = tat->d_data.begin()->first;
+ Debug("simple-trigger") << "Actual term is " << t << std::endl;
+ //convert to actual used terms
+ for( std::map< int, int >::iterator it = d_var_num.begin(); it != d_var_num.end(); ++it ){
+ Debug("simple-trigger") << "...set " << it->second << " " << t[it->first] << std::endl;
+ m.setValue( it->second, t[it->first] );
+ }
+ if( qe->addInstantiation( d_f, m, false ) ){
addedLemmas++;
Debug("simple-trigger") << "-> Produced instantiation " << m << std::endl;
}
for( std::map< Node, quantifiers::TermArgTrie >::iterator it = tat->d_data.begin(); it != tat->d_data.end(); ++it ){
Node t = it->first;
Node prev = m.get( v );
+ //using representatives, just check if equal
if( ( prev.isNull() || prev==t ) && t.getType().isSubtypeOf( d_match_pattern[argIndex].getType() ) ){
m.setValue( v, t);
addInstantiations( m, qe, addedLemmas, argIndex+1, &(it->second) );
Assert( evaluate( inst )==-1 || e>effort_conflict );\r
//}\r
}\r
- if( d_quantEngine->addInstantiation( q, terms ) ){\r
+ if( d_quantEngine->addInstantiation( q, terms, false ) ){\r
Trace("qcf-check") << " ... Added instantiation" << std::endl;\r
Trace("qcf-inst") << "*** Was from effort " << e << " : " << std::endl;\r
qi->debugPrintMatch("qcf-inst");\r