# How to extract expression from ConditionalExpression

p1 := y /. {First[Solve[x^2 + y^2 + x == 1, y, Reals]]}
{ConditionalExpression[-Sqrt[1 - x - x^2],
1/2 (-1 - Sqrt[5]) < x < 1/2 (-1 + Sqrt[5])]}

I want to get the -Sqrt[1 - x - x^2] out of the conditional expression and assign it to a variable. I don't care about the conditions, I'm aware of them and need the expression for use out of the ConditionalExpression. How do I do that?

I tried list commands combinations (Flatten, First, etc.) but they don't work with this. Am I just supposed to copy-paste?

• Have you tried Part? Like in %[[1,1]]. (By the way, with := you should not get any output, perhaps you meant p1=...). Dec 10, 2013 at 5:33

You can use Normal, ConditionalExpression is not explicitly mentioned there but documentation says it deals with special forms.

p1 = y /. {First[Solve[x^2 + y^2 + x == 1, y, Reals]]} // First
ConditionalExpression[-Sqrt[1 - x - x^2], 1/2 (-1 - Sqrt[5]) < x < 1/2 (-1 + Sqrt[5])]
Normal @ p1
-Sqrt[1 - x - x^2]
• Ah didn't know Normal can handle this! +1! Dec 10, 2013 at 8:11

You can forcely specify the condition to be True:

Solve[x^2 + y^2 + x == 1, y, Reals] /.
ConditionalExpression[e_, _] :> ConditionalExpression[e, True]
{{y -> -Sqrt[1 - x - x^2]}, {y -> Sqrt[1 - x - x^2]}}

But you should always keep it in mind that this is not an identical transformation.

Simplify[ConditionalExpression[-Sqrt[1 - x - x^2],
1/2 (-1 - Sqrt[5]) < x < 1/2 (-1 + Sqrt[5])],
1/2 (-1 - Sqrt[5]) < x < 1/2 (-1 + Sqrt[5])]

(*    -Sqrt[1 - x - x^2]       *)

another way is to use Simplify or Fullsimplify

Simplify @@
ConditionalExpression[-Sqrt[1 - x - x^2],
1/2 (-1 - Sqrt[5]) < x < 1/2 (-1 + Sqrt[5])]

returns

-Sqrt[1 - x - x^2]