if( d_rep_score.find( r_best )==d_rep_score.end() ){
d_rep_score[ r_best ] = d_reset_count;
}
- Trace("internal-rep-select") << "...Choose " << r_best << " with score " << r_best_score << std::endl;
+ Trace("internal-rep-select")
+ << "...Choose " << r_best << " with score " << r_best_score
+ << " and type " << r_best.getType() << std::endl;
Assert(r_best.getType().isSubtypeOf(v_tn));
v_int_rep[r] = r_best;
if( r_best!=a ){
{
terms[i] = getTermForType(tn);
}
+ // Ensure the type is correct, this for instance ensures that real terms
+ // are cast to integers for { x -> t } where x has type Int and t has
+ // type Real.
+ terms[i] = quantifiers::TermUtil::ensureType(terms[i], tn);
if (mkRep)
{
// pick the best possible representative for instantiation, based on past
// use and simplicity of term
terms[i] = d_qe->getInternalRepresentative(terms[i], q, i);
}
- else
- {
- // ensure the type is correct
- terms[i] = quantifiers::TermUtil::ensureType(terms[i], tn);
- }
Trace("inst-add-debug") << " -> " << terms[i] << std::endl;
if (terms[i].isNull())
{
regress1/fmf/german73.smt2
regress1/fmf/issue2034-preinit.smt2
regress1/fmf/issue3587.smt2
+ regress1/fmf/issue3626.smt2
regress1/fmf/issue916-fmf-or.smt2
regress1/fmf/jasmin-cdt-crash.smt2
regress1/fmf/ko-bound-set.cvc
--- /dev/null
+; COMMAND-LINE: --fmf-bound
+; EXPECT: sat
+(set-logic ALL)
+(assert (forall ((a Int)) (or (distinct (/ 0 0) a) (= (/ 0 a) 0))))
+(check-sat)