Given the expression:

Simplify[Reduce[Exists[{x},a x^2+b x+ c==0],x,Reals]]

The answer comes out as:

(b==0 && ((c>0 && a<0)||(a>0 && c<0)))||(b!=0 && 4 a c<=b^2)||c==0

However, surely this is just the same as:

b^2-4ac >= 0

Since if a or c is 0 this is always true and this one statement covers all the cases.

So why doesn't it simplify to this? Or is there a way to make it simplify to this?


2 Answers 2


Exists and ForAll are qualifier statements and you can attempt to Resolve them to remove the qualifiers as follows:

qualifierStatement=Exists[x,a x^2+b x+c==0]

Now to resolve it under the real domain as follows:


Now to get your condition you need to ensure that the quadratic actually exist which is only true as long as a!=0, i.e. the highest term of power 2 exists. So we get the condition as follows:


4 a c <= b^2

Note: using Reduce is not appropriate here since it has general equation and inequality solving algorithms which does more than just Resolve the qualifiers. Reduce expands and splits the conditions too much for Simplify to bring them together again!


The first predicate is false for a->0, b->0, c->1:

(b==0 && ((c>0 && a<0)||(a>0 && c<0)))||(b!=0 && 4 a c<=b^2)||c==0 /. {a->0, b->0, c->1}


The second predicate is true for this case:

b^2 - 4 a c >= 0 /. {a->0, b->0, c->1}


  • $\begingroup$ Ah good point. Seems like its still long winded though. $\endgroup$
    – zooby
    Jan 20, 2020 at 17:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.