# solutions to complex polynomial systems

I can not find anywhere whether Mathematica finds ALL the complex solutions to complex polynomial systems or just some of them.

For example, I typed

Solve[{x y^2 - y z^2 + x^5 + a x^2 z^2 == 0, D[x y^2 - y z^2 + x^5 + a x^2 z^2, x] == 0, D[x y^2 - y z^2 + x^5 + a x^2 z^2, y] == 0, D[x y^2 - y z^2 + x^5 + a x^2 z^2, z] == 0}, {x, y, z, a}]

and I got (0,0,0) and probably two singular curves, but there's a notification saying "Solve: Equations may not give solutions for all "solve" variables." What does that mean?

Thank you.

• Your output will show solutions where (for example) y and z are functions of x which means there are an infinite number of solutions. So the 4 equations you list don't give you finite set of solutions. The (0,0,0) solution allows a to take on any value. Using Reduce in place of Solve might help.
– JimB
Commented Apr 3, 2017 at 18:05
• I see, thank you @Jim, very useful comments. However, I also meant more in general: can Mathematica find literally all the solutions of a polynomial system over complex numbers? I mean can I trust that there's no other solution that Mathematica might miss? Commented Apr 4, 2017 at 15:30

eqns = {
x y^2 - y z^2 + x^5 + a x^2 z^2 == 0,
D[x y^2 - y z^2 + x^5 + a x^2 z^2, x] == 0,
D[x y^2 - y z^2 + x^5 + a x^2 z^2, y] == 0,
D[x y^2 - y z^2 + x^5 + a x^2 z^2, z] == 0};

vars = {x, y, z, a};

soln = Solve[eqns, vars]


Verifying the solutions

And @@ (And @@ eqns /. soln)

(*  True  *)


Each solution leaves a variable unspecified, i.e., that variable can have any value (real or complex) and still satisfy the equations.

Map[First, soln, {2}]

(*  {{x, y, z}, {y, z, a}, {y, z, a}, {y, z, a}, {y, z, a}}  *)


Since a "solve" variable is not specified, the warning is issued.

Let us consider

Reduce[{x y^2 - y z^2 + x^5 + a x^2 z^2 == 0,D[x y^2 - y z^2 + x^5 + a x^2 z^2, x] == 0,
D[x y^2 - y z^2 + x^5 + a x^2 z^2, y] == 0,D[x y^2 - y z^2 + x^5 + a x^2 z^2, z] == 0},
{x, y, z, a}]


(x==0&&y==0&&z==0)||((y==-I x^2||y==I x^2)&&(z==-Sqrt[2] Sqrt[x] Sqrt[y]||z==Sqrt[2] Sqrt[x] Sqrt[y])&&x!=0&&a==y/x^2)

i.e. the system under consideration has an infinite set of its solutions. Hope this sheds light on the warning.