This is a simple system of algebraic equations. It is clear that two first equations determine x1 and x2 and the third one determines x3. But something goes wrong...

sys={1+x1^2,-3+x2^2+4x2*x1,-3+x3+x2*x1} sol=Solve[sys==0]sys/.sol

In[]:=

{1+,-3+4x1x2+,-3+x1x2+x3}

2

x1

2

x2

Out[]=

{{x1-,x2,x32},{x1-,x23,x30},{x1,x2-3,x30},{x1,x2-,x30}}

Out[]=

{{0,0,0},{0,0,0},{0,0,0},{0,0,-2}}

Out[]=

We see that there are 4 branch solutions and one of them is found with an error (in fact, x3 for these values of x1, x2 should be 2). The error is somehow related with I: if we change the signs of free terms in equations then everything is real and all solutions are found correctly:

sys1={-1+x1^2,3+x2^2+4x2*x1,3+x3+x2*x1} sol=Solve[sys1==0]sys1/.sol

In[]:=

{-1+,3+4x1x2+,3+x1x2+x3}

2

x1

2

x2

Out[]=

{{x1-1,x21,x3-2},{x1-1,x23,x30},{x11,x2-3,x30},{x11,x2-1,x3-2}}

Out[]=

{{0,0,0},{0,0,0},{0,0,0},{0,0,0}}

Out[]=

Applying GroebnerBasis before solving the system fixes the problem in this particular case, although the transformed equations do not look simpler than the original ones. However, this does not fix the problem with Solve itself...

Factor[GroebnerBasis[sys,{x1,x2,x3}]]Solve[%==0]sys/.%

In[]:=

{(-2+x3)x3,9+-4x3,3x1+x2+x2x3}

2

x2

Out[]=

{{x1-,x2,x32},{x1-,x23,x30},{x1,x2-,x32},{x1,x2-3,x30}}

Out[]=

{{0,0,0},{0,0,0},{0,0,0},{0,0,0}}

Out[]=