# Get rid of some solutions proposed by Reduce/Solve

I would like to take the result of a Reduce function call and eliminate any solutions that depend on the value of a particular variable (call it $$y$$). For instance, I am trying to get the parameters for a linear representation of the expression $$\frac{y\beta}{\alpha+\beta}$$ (linear in $$y$$), where $$\alpha,\beta>0$$. (Related: Force expression in certain form).

I do:

Reduce[y*β/(α + β) == a*y + b && α > 0 && β > 0, {y}, Reals] // FullSimplify


However, the command yields both the solution I'm looking for ($$a=\frac{\beta}{\alpha+\beta},b=0$$) and another, very specialized solution, where if $$y$$ happens to equal a specific combination of $$a$$ and $$b$$, then it does not matter what $$a$$ or $$b$$ are. While that is correct (and I applaud MMA for its completeness), I only want solutions that hold for any value of $$y$$. Also, the presence of that solution adds unwanted complexity to the Reduce output.

To reduce the cognitive load of determining exactly what to ignore in the output, I would like to get a further-reduced expression that eliminates any solution that depends on the value of $$y$$. Is there an easy way to do this?

If I understand you correctly, you just need to use ForAll, which requires that the equations in the second argument be true for all values of the first argument:

Reduce[
ForAll[y, y*β/(α + β) == a*y + b]
&& α > 0 && β > 0, {y}, Reals] // FullSimplify

(* β > 0 && α > 0 && b == 0 && a == β/(α + β) *)


Due to @Michael Seifert's answer introducing ForAll, I found a simpler way to accomplish the task I had in mind, using Solve rather than Reduce:

Solve[ForAll[y, y*β/(α + β) == a*y + b], {a, b}, Reals]