1 | initial version |

I have now looked at the underlying code for solve. It turns out that if the first argument of solve is an equation or a list of just one equation the object function sage.symbolic.expression.Expression.solve is used. This explains why the output of

```
solve([sin(x)==0,sin(x)==0],x
```

and

```
solve([sin(x)==0],x)
```

may differ. To force to get all solutions in the first case one can use

```
solve(sin(x)==0,x,to_poly_solve='force')
```

Another thing I've found out is that in the definition of the underlying maxima function solve is declared as
`solve ([eqn_1, …, eqn_n], [x_1, …, x_n])`

so the number of equations should match the number of variables.

If one reformulates the problem to

```
solve(-sin(x)*sin(x)==0,x,to_poly_solve='force')
```

all solutions will be displayed.

However I liked the behaviour of previous Versions of sage That is: If solve could't find a solution the original equation was returned. That way it was clear that there may exist solutions sage could not found.

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.