Computation of dparu(u)
> dparu1:=collect(subs(d(z)=0,dg),p);
The next three steps are a bit of 'sleight of hand' to get Maple to remove the appropriate terms... namely those with a p in the numerator, and no p's in the denominator.
> dparuromeo:=simplify(p*dparu1);
> dparulist:=convert(dparuromeo,list);
> dparujuliet:=remove(has,dparulist,{p^2,p^3,p^4});
> dparu2:=convert(dparujuliet,`+`)/p;
Now we simplify dparu2, set it equal to zero, and solve for d(u). This is then dparu(u).
> dparuu:=solve(dparu2=0,d(u));
>