Integrate with explicit integration variable/infetesimal...



Upon reflection, it seems to me pretty easy, in fact, to interpret
Leibniz-style dx in the context of integration, and even to implement
it in Maxima.  dx represents an infinitesimal which, when summed under
the integral sign, gives a finite number.  So the integral of a finite
non-zero number is divergent, and the integral of dx^2 is dx --
removing infinitesimals, that leaves zero.

So just expand using Taylor and voila!  The answer.  How useful it
is... is another matter.

xintegrate(expr, x, dx) :=
  block([tay, tay1],
    tay : taylor(expr, dx, 0, 1),
    tay1 : ratcoef(tay, dx, 1),
    if asksign(ratdisrep(tay - tay1*dx)) # 'zero
      then error("integral divergent or unknown")
      else integrate(tay1, x));

Note that there *are* cases which this doesn't handle, e.g. dx^a, but
I suspect that you didn't need anything this fancy in the first place.

           -s