case OR: nullTerm = nm->mkConst(false); break;
case AND:
case SEP_STAR: nullTerm = nm->mkConst(true); break;
- case ADD: nullTerm = nm->mkConstRealOrInt(tn, Rational(0)); break;
+ case ADD:
+ // Note that we ignore the type. This is safe since ADD is permissive
+ // for subtypes.
+ nullTerm = nm->mkConstInt(Rational(0));
+ break;
case MULT:
case NONLINEAR_MULT:
- nullTerm = nm->mkConstRealOrInt(tn, Rational(1));
+ // Note that we ignore the type. This is safe since multiplication is
+ // permissive for subtypes.
+ nullTerm = nm->mkConstInt(Rational(1));
break;
case STRING_CONCAT:
// handles strings and sequences
Node cret = postConvert(ret);
if (!cret.isNull() && ret != cret)
{
- AlwaysAssert(cret.getType().isComparableTo(ret.getType()))
+ AlwaysAssert(cret.getType() == ret.getType())
<< "Converting " << ret << " to " << cret << " changes type";
Trace("nconv-debug2") << "..post-rewrite changed " << ret << " into "
<< cret << std::endl;