I don't know how best to ask this question. If I have a equation with more unknowns that knowns and want to know the possible solutions and get something like this,
Is there some significance of these 4 solutions? Are these solutions analogous to the case of `solve(a + b, a)` giving a = -b? The problem that I see is that if you write
>>> solve(a*x+a+b*y-4, a, b)
[(0, 4/y), (4/(x + 1), 0)]
Those are only 2 of an infinite number of solutions since there are an infinite number of ways to partition up the 4. If we partition 4 as c + d (which then gives a solution that we obtained above) then substituting in different values of c and d gives a variety of solutions:
>>> ans=solve(a*x+a+b*y-c-d,a, b)
>>> [Tuple(*ai).subs({c:1,d:3}) for ai in ans]
[(0, 4/y), (1/(x + 1), 3/y), (3/(x + 1), 1/y), (4/(x + 1), 0)]
>>> [Tuple(*ai).subs({c:2,d:2}) for ai in ans]
[(0, 4/y), (2/(x + 1), 2/y), (2/(x + 1), 2/y), (4/(x + 1), 0)]
>>> [Tuple(*ai).subs({c:4,d:0}) for ai in ans]
[(0, 4/y), (4/(x + 1), 0), (0, 4/y), (4/(x + 1), 0)]
(Solving this type of equation arose in doing the multinomial_coefficients-without-expansion problem.)