else if (k == kind::FLOATINGPOINT_TO_FP_REAL)
{
// Get the values
- Assert(m->hasTerm(abstract));
- Assert(m->hasTerm(concrete[0]));
- Assert(m->hasTerm(concrete[1]));
+ Assert(m->hasTerm(abstract)) << "Term " << abstract << " not in model";
+ Assert(m->hasTerm(concrete[0]))
+ << "Term " << concrete[0] << " not in model";
+ // Note: while the value for concrete[1] that we get from the model has to
+ // be const, it is not necessarily the case that `m->hasTerm(concrete[1])`.
+ // The arithmetic solver computes values for the variables in shared terms
+ // but does not necessarily add the shared terms themselves.
Node abstractValue = m->getValue(abstract);
Node rmValue = m->getValue(concrete[0]);
regress0/fp/issue5734.smt2
regress0/fp/issue6164.smt2
regress0/fp/issue7002.smt2
+ regress0/fp/issue7569.smt2
regress0/fp/proj-issue329-prereg-context.smt2
regress0/fp/rti_3_5_bug.smt2
regress0/fp/simple.smt2
--- /dev/null
+(set-logic QF_ALL)
+(declare-const X (_ FloatingPoint 8 24))
+(declare-const R Real)
+(assert (= X ((_ to_fp 8 24) RTZ (- R))))
+(assert (= X ((_ to_fp 8 24) RTZ 0)))
+(set-info :status sat)
+(check-sat)