If you have an equation like

2x0, it is perfectly clear that the only possible solution is

x->0. However, if you have an equation like

ax0, things are not so clear. If

a is not equal to zero, then

x->0 is again the only solution. However, if

a is in fact equal to zero, then

*any* value of

x is a solution. You can see this by using

Reduce.

A basic difference between

Reduce and

Solve is that

Reduce gives

*all* the possible solutions to a set of equations, while

Solve gives only the

*generic* ones. Solutions are considered "generic" if they involve conditions only on the variables that you explicitly solve for, and not on other parameters in the equations.

Reduce and

Solve also differ in that

Reduce always returns combinations of equations, while

Solve gives results in the form of transformation rules.

When you have several simultaneous equations,

Reduce can show you under what conditions the equations have solutions.

Solve shows you whether there are any generic solutions.

When you work with systems of linear equations, you can use

Solve to get generic solutions, and

Reduce to find out for what values of parameters solutions exist.

For nonlinear equations, the conditions for the existence of solutions can be much more complicated.