# Simplify[] cannot separate multiplied terms like a×b [closed]

How can FullSimplify[] be made smarter? In the example below, the mere combination of q*h prvented h on both left and right sides from been cancelled in the 1st example, even if Assumptions->h>0 is made:

Row[{FullSimplify[(q h/a==q h/b) (*Note how q*h combination prevented simplification*),
Assumptions->h>0],(q h/a==q h/b)//TreeForm}]

Row[{FullSimplify[(q h/a==q h/b),Assumptions->q h>0],(q h/a==q h/b)//TreeForm}]


It only waits until Assumptions->q h>0 to be able to cancel h.

Update: By defining a function with Assumption-> first, the same equation can be solved. I cannot figure out why.

Update again: as @Spawn1701D noticed, the mere condition of h>0 is sufficient for the simplification. I just cannot figure out why definining a function f[x_] here differs from the above with the same minimal condition h>0 !

Jim

-
You can use ComplexityFunction or just move everything on the lhs for example. –  Spawn1701D Jun 10 at 19:23
I have no idea why.. ps. I can't open your screenshot url. –  Silvia Jun 10 at 19:52
The assumption that $q h > 0$ is an important one, and its refusal to simplify the function is well founded. With only the assumption $h>0$, what happens if $q = 0$? Are you allowed to move it from one side to that other via division? (Note, one "proof" of $1 = 0$ involves this "trick".) If you specify, q !=0 && h !=0, then it simplifies just fine. –  rcollyer Jun 10 at 20:07
The expression in the update section simplifies just fine without the need for an additional function and with minimun assumption that $h>0$. –  Spawn1701D Jun 10 at 20:14
@rollyer But shouldn't it just cancel h so gives q/a == q/b? Or why FullSimplify[a b c==a b d,Assumptions->a!=0] gives b c==b d, while FullSimplify[a b/c==a b/d,Assumptions->a!=0] gives (a b)/c==(a b)/d, leaving a in-canceled? –  Silvia Jun 10 at 20:42