if( d_var_types.find( n )!=d_var_types.end() ){
return getIdForType( n.getType() );
}else{
+ //apply sort inference to quantified variables
for( size_t i=0; i<n[0].getNumChildren(); i++ ){
- //apply sort inference to quantified variables
- d_var_types[n][n[0][i]] = d_sortCount;
- d_sortCount++;
-
- //type of the quantified variable must be the same
+ TypeNode nitn = n[0][i].getType();
+ if( !nitn.isSort() )
+ {
+ // If the variable is of an interpreted sort, we assume the
+ // the sort of the variable will stay the same sort.
+ d_var_types[n][n[0][i]] = getIdForType( nitn );
+ }
+ else
+ {
+ // If it is of an uninterpreted sort, infer subsorts.
+ d_var_types[n][n[0][i]] = d_sortCount;
+ d_sortCount++;
+ }
var_bound[ n[0][i] ] = n;
}
}
regress0/fmf/quant_real_univ.cvc \
regress0/fmf/sat-logic.smt2 \
regress0/fmf/sc_bad_model_1221.smt2 \
+ regress0/fmf/sort-infer-typed-082718.smt2 \
regress0/fmf/syn002-si-real-int.smt2 \
regress0/fmf/tail_rec.smt2 \
regress0/fp/simple.smt2 \
regress1/quantifiers/cdt-0208-to.smt2 \
regress1/quantifiers/const.cvc \
regress1/quantifiers/constfunc.cvc \
- regress1/quantifiers/dump-inst.smt2 \
+ regress1/quantifiers/dump-inst.smt2 \
regress1/quantifiers/dump-inst-i.smt2 \
regress1/quantifiers/dump-inst-proof.smt2 \
regress1/quantifiers/ext-ex-deq-trigger.smt2 \
--- /dev/null
+; COMMAND-LINE: --sort-inference --finite-model-find --no-check-unsat-cores --no-check-proofs
+; EXPECT: unsat
+(set-logic ALL)
+(assert (not (exists ((X Int)) (not (= X 12)) )))
+(check-sat)
+