# Don't understand results from solving easy polynomial equations

I am alarmed by the behavior of Mathematica (9.0) when given the following simple set of equations to solve:

eq = {1 + x^3 - 5*x*y + y^3 == 0,
3 - 5*x*y + ((1 + I*Sqrt)*(-5*x + 3*y^2))/2 == 0}


Solve[eq] gives the 4 solutions correctly.
Solve[eq,{x,y}] results in the message

Roots::neq: 0 is expected to be a polynomial in the variable x.

Solve::svars: Equations may not give solutions for all "solve" variables.

and gives spurious solutions such as {y -> (-I/2)*(-I + Sqrt)}, in addition to the correct ones.

How can I suppress / correct this strange behavior?

• I formatted your answer. Please learn how to do it yourself here. I also removed the bug tag, until it is confirmed as a bug – yohbs Sep 14 '15 at 21:17
• Also, I cannot reproduce the problem on my machine (MMA 10.2 on Ubuntu). Does the problem persist when you use a fresh kernel? (that is, if you restart the kernel, and only run the commands here)? – yohbs Sep 14 '15 at 21:20
• Both work fine for me, giving the same answer, on 10.2 on Mac OS X. Reduce works as well. – Mark Adler Sep 14 '15 at 21:21
• bugs is reserved until it is confirmed by the community or WRI. I can reproduce this on 8.0.1 and 9.0.1, but not on 10.0.2. So, I think its fixed. – rcollyer Sep 14 '15 at 21:22
• As a workaround you can eliminate elements of the solution that don' t include both variables: Solve[eq, {x, y}] // Select[#, Length[#] == 2 &] & – Bob Hanlon Sep 14 '15 at 21:53

This is not an answer but an extended comment.

On MMA V8.0.1, note the following:

eq = {1 + x^3 - 5*x*y + y^3 == 0,
3 - 5*x*y + ((1 + I*Sqrt)*(-5*x + 3*y^2))/2 == 0};

sol = eq /. First@Solve[eq, {x, y}] // Expand
(* {2 + (5 x)/2 + 5/2 I Sqrt x + x^3 == 0, True} *)


Then,

xsols = Solve[First@sol, x]
(* {   {x -> I (I + Sqrt)}
, {x -> 1/2 (1 - I Sqrt - I Sqrt[4 + 4 I Sqrt])}
, {x -> 1/2 (1 - I Sqrt + I Sqrt[4 + 4 I Sqrt])}   }  *)


and

xsols2 = First /@ Solve[eq, {x, y}][[2 ;; 4]];
Flatten@xsols === xsols2
(* True *)


In other words, it's not really finding spurious solutions. It's more like it's trying to do too much work.

A robust workaround seems to be to use Solve[Reduce[system], ...] in place of Solve[system, ...].