depends variables and pde (version 1)
example :  Apostol 'calculus' ,vol II ,p287,problem  7
peter.vlasschaert@gmail.com,18/10/2017

find :g(x,y)
u(x,y) = x*y*f((x+y)/(x*y)) = x*y*f(t)      (1)
x^2*diff(u,x)-y^2*diff(u,y) = g(x,y)*u  (2)

a) find dependencies 'u'

u = x*y*f

depends(u,[x,y,f]);

u=x*y*f(t)        =>   f=f(t)

depends(f,t);

t=(x+y)/(x*y)  => t=t(x,y)

depends(t,[x,y]);

? dependencies  u

dependencies;

b)  find :diff(u,x) 'p2',diff(u,y) 'p3' ,given : u = u(x,y,f)

p1:u=x*y*f$
p2:diff(rhs(p1),x);
p3:diff(rhs(p1),y);

c) find :diff(t,x) 'p51',diff(t,y) 'p61' ,given : t=t(x,y)
simply with 'ratsimp'

p4: t=(x+y)/(x*y);

p5:ev(diff(rhs(p4),x),ratsimp)$
p51:'diff(t,x) = p5;
p6:ev(diff(rhs(p4),y),ratsimp)$
p61:'diff(t,y) = p6;

d) input 'p51 and p61' in 'p2 and p3'
=>                            [diff(u,x),diff(u,y)];

p7:ev([p2,p3],p51,p61)$
p71:p7[1];
p72:p7[2];

e)  insert  result d) in  lhs((2)) from above.
=> new rhs((2))

p8:ev(x^2*p71-y^2*p72,ratsimp);

f) find g(x,y) ?
=> from : new rhs((2)) = g(x,y)*rhs((1))

p9: p8=g(x,y)*rhs(p1);
p10:solve(p9,g(x,y))[1];