From 699010484f102ef347be5fd9219da86ea4319d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 1 Jun 2018 14:52:38 +0200 Subject: [PATCH] [solver] Equation: fix edge case: if the equation was simplified because always true, the standard form must be 0 --- apps/solver/equation.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/solver/equation.cpp b/apps/solver/equation.cpp index ee3ae35b0..4468d24e2 100644 --- a/apps/solver/equation.cpp +++ b/apps/solver/equation.cpp @@ -37,7 +37,14 @@ void Equation::tidy() { Expression * Equation::standardForm(Context * context) const { if (m_standardForm == nullptr) { - m_standardForm = static_cast(expression(context))->standardEquation(*context); + Expression * e = expression(context); + if (e->type() == Expression::Type::Equal) { + m_standardForm = static_cast(e)->standardEquation(*context); + } else { + // The equality was reduced which means the equality was always true. + assert(e->type() == Expression::Type::Rational && static_cast(e)->isOne()); + m_standardForm = new Rational(0); + } } return m_standardForm; }