Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In a recent question I posed, it was noted that by design, Sqrt[ blah] only returns the positive branch, even though we might want to obtain all possible symbolic solutions. So, taking care to avoid the Sqrt function here in my input :), suppose I am interested to find the intervals that, when squared, generate the Interval[{0,4}]:

Solve[Interval[{0, 4}] == y^2, y]

This returns:

{{y -> Interval[{-2, 0}]}, {y -> Interval[{0, 2}]}}

How should we then obtain the missing solution:

expr = Interval[{-2, 2}];  expr^2
Interval[{0, 4}]

… that nests all others?

[P.S. I suppose a Union applied to the output might do the trick, but I'm not sure a trick is the real point to the question.]

share|improve this question
I don't understand you. There doesn't seem to be a "missing solution", just another way of rewriting the other two ForAll[y, IntervalMemberQ[Interval[{-2, 0}], y] || IntervalMemberQ[Interval[{0, 2}], y], IntervalMemberQ[Interval[{-2, 2}], y]] – Dr. belisarius Apr 21 '13 at 19:15
Are you suggesting that if Solve[blah] returns the solution set {A,B}, ... it should be interpreted as A Or B Or Union[A,B] ? – wolfies Apr 21 '13 at 19:47
Here's a very similar question:… – Mark McClure Apr 22 '13 at 15:36
up vote 5 down vote accepted

Use inequalities, as Reduce knows how to work with those.

Reduce[0 <= y^2 <= 4, y, Reals]

(* Out[9]= -2 <= y <= 2`*)

Interval[] resides mostly in the arithmetic/numerical world, and symbolic solving with those will at best, in general, give an overestimated result (that is, one that properly contains the actual result). Here is an example. We first show that if -1<=x<=1 then -1/4<=x^2+x<=2.

Minimize[{x^2 + x, -1 <= x <= 1}, x]

(* Out[12]= {-(1/4), {x -> -(1/2)}} *)

Maximize[{x^2 + x, -1 <= x <= 1}, x]

(* Out[13]= {2, {x -> 1}} *)

Now try to recover this with Solve.

Solve[x^2 + x == Interval[{-1/4, 2}], x]

(* Out[14]= {{x -> Interval[{-2, -(1/2)}]},  {x -> Interval[{-(1/2), 1}]}} *)

The interval from -2 to 1 properly contains the one from -1/4 to 1.

Here is another variation. We set x to the interval from -1 to 1. We showed above that x^2+x lies between -1/4 and 2. The interval for 'y` below properly contains this.

Solve[{y == x^2 + x, x == Interval[{-1, 1}]}, {x, y}]

(*  Out[15]= {{x -> Interval[{-1, 1}],   y -> Interval[{-2, 2}]}}  *)
share|improve this answer
Fixed minor typo: x^2-x > x^2+x .... Interestingly, stackexchange wouldn't allow the edit because it was less than 6 characters, which seems a bit artificial for a math site. All that was needed was 1 character (+ some ....... to get around the limit). Thanks for the interesting post, Daniel! – wolfies Apr 22 '13 at 15:22
Heh. It just now let me add a (needed but missing) comma. I guess I was lucky. – Daniel Lichtblau Apr 22 '13 at 15:28

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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