# 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 -0600
**

Seen: **160 times**

Last updated: **Feb 14 '14**

solve solution change after cell evaluation

Cannot solve equation with two radical terms

Numerical real solution of derivative

Finding coprime integer solutions

Solve system of equations with additional conditions in sage

How to simplify x^a/x into x^(a-1) OR how to solve...?

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]) .