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?


2 Answers 2


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:

  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]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.