# 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) < x < 1/2 (-1 + Sqrt)]}


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=...). – Peltio Dec 10 '13 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) < x < 1/2 (-1 + Sqrt)]

Normal @ p1

-Sqrt[1 - x - x^2]

• Ah didn't know Normal can handle this! +1! – Silvia Dec 10 '13 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) < x < 1/2 (-1 + Sqrt)],
1/2 (-1 - Sqrt) < x < 1/2 (-1 + Sqrt)]

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


another way is to use Simplify or Fullsimplify

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


returns

-Sqrt[1 - x - x^2]