# Missing solution in homogeneous equation

```
var('x y')
solve(x*y, [x, y])
```

returns only the solution x=0, missing y=0. Is this a known bug? I am using sage 5.13.

1

First, the workaround.

```
sage: var('y')
y
sage: a = x*y
sage: solve([a,1==1],[x,y])
[[x == r1, y == 0], [x == 0, y == r2]]
```

There is an open ticket about this I will try to find later. But at least now I know the reason.

This is interesting - apparently we assume that if one passes in a single expression, there is a single variable that should be solved for.

```
# There *should* be only one variable in the list, since it is
# passed from sage.symbolic.relation.solve() and multiple variables
# there don't call this function.
if isinstance(x, (list, tuple)):
x = x[0]
```

That explains your result. However, @moroplogo's is even more interesting. What happens is that all arguments get passed to `xy.solve()`

```
if is_Expression(f): # f is a single expression
ans = f.solve(*args,**kwds)
return ans
```

But these are *not* unpacked! So we have something that actually passes in to Maxima. But what? It's not passing in this:

```
(%i2) solve(x*y,[x,y]);
(%o2) [[x = %r1, y = 0], [x = 0, y = %r2]]
```

and some debugging indicates it should just be passing in the same as `solve(x*y,x)`

. I'm not sure how that extra `[1]`

gets in there.

Asked: **
2014-02-11 21:45:46 -0500
**

Seen: **148 times**

Last updated: **Feb 14 '14**

solve gives 1, 2, or 3 answers depending if one value in my equation is a real, rational, or integer

solving polynomial equations with to_poly_solve

Plot the level sets of a function

assume() seems not to work for a specific case...

How to make solve to use certain variables on the right side

Finding coprime integer solutions

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.

It's a strange problem indeed! However this is not a well-formed code , you can write this : solve([x*y==0], x , y) and the answer is : ([x == 0], [1]) . If you write this : solve([x*y==0], y ,x) the answer is : ([y == 0], [1]) .