integrate assume fatigue?



an example of facts() --->  [ w > 0 ]
but integrate still asks if w is positive.

I have included the context of the behavior.

(%i1) display2d:false$
(%i2) ( assume(w>0), facts());
(%o2) [w > 0]

/* first we do two integrals needed for the exponential
      fourier transform where the sign of w matters*/

(%i3) i1:integrate(exp(%i*w*x)*sin(x)*exp(x),x,minf,0);
(%o3) (w^2-2)/(w^4+4)+2*%i*w/(w^4+4)
(%i4) i2:integrate(exp(%i*w*x)*sin(x)*exp(-x),x,0,inf);
(%o4) 2*%i*w/(w^4+4)-(w^2-2)/(w^4+4)
(%i5) iexp:ratsimp(i1+i2)/(2*%pi);
(%o5) 2*%i*w/(%pi*(w^4+4))
(%i6) facts();
(%o6) [w > 0]

/* the following inverse exponential fourier transform calc does not
   need to know the sign of w (see below)  */

(%i7) integrate(exp(-%i*w*x)*iexp,w,minf,inf);
Is  x  positive, negative, or zero?
p;
(%o7) %e^-x*sin(x)
(%i8) facts();
(%o8) [w > 0]

/* here we do a fourier sine integral transform 
      where the sign of w matters, but integrate
      is asking if w > 0  */

(%i9) i3:integrate(sin(x)*exp(-x)*sin(w*x),x,0,inf);
Is  w  positive, negative, or zero?
p;
Is  w-1  positive, negative, or zero?
p;
(%o9) 2*w/(w^4+4)

so initial use of the assume database was good, but later
integrate suffers from assume database fatigue?

If we now **restart** Maxima, we can see that
 1. the inverse exponential fourier transform
     integral does not need to know the sign of w, and
 2. the fourier sine integral (when we have a
     fresh session) correctly uses the assume database.

(%i1) display2d:false$
(%i2) facts();
(%o2) []

(%i3) iexp:2*%i*w/(%pi*(w^4+4))$
(%i4) integrate(exp(-%i*w*x)*iexp,w,minf,inf);
Is  x  positive, negative, or zero?
p;
(%o4) %e^-x*sin(x)
(%i5) (assume(w>0),facts() );
(%o5) [w > 0]

(%i6) i3:integrate(sin(x)*exp(-x)*sin(w*x),x,0,inf);
Is  w-1  positive, negative, or zero?
p;
(%o6) 2*w/(w^4+4)
(%i7) facts();
(%o7) [w > 0]

Ted Woollett