{
currentSub = current;
}
- if (parent.getType() != current.getType())
- {
- currentSub = newUnconstrainedVar(parent.getType(), currentSub);
- }
+ // always introduce a new variable; it is unsound to try to reuse
+ // currentSub as the variable, see issue #4469.
+ currentSub = newUnconstrainedVar(parent.getType(), currentSub);
current = parent;
}
else
}
if (!currentSub.isNull())
{
+ Trace("unc-simp")
+ << "UnconstrainedSimplifier::processUnconstrained: introduce "
+ << currentSub << " for " << current << ", parent " << parent
+ << std::endl;
Assert(currentSub.isVar());
d_substitutions.addSubstitution(current, currentSub, false);
}
regress0/issue1063-overloading-dt-sel.smt2
regress0/issue2832-qualId.smt2
regress0/issue4010-sort-inf-var.smt2
+ regress0/issue4469-unc-no-reuse-var.smt2
regress0/ite.cvc
regress0/ite2.smt2
regress0/ite3.smt2