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