posible bug - clashing variable names in integrals
Subject: posible bug - clashing variable names in integrals
From: Nathaniel Virgo
Date: Sat, 3 Oct 2009 12:14:53 +0100
Hi
I just came across the following. Should it be considered a bug?
this works fine:
(%i10) C:integrate(g(y),y,c,d);
(%o10) integrate(g(y),y,c,d)
(%i11) A: integrate(C*f(x),x,a,b);
(%o11) integrate(f(x),x,a,b)*integrate(g(y),y,c,d)
it has successfully taken the constant outside the integral
(%i12) B: C*'integrate(f(x),x,a,b);
(%o12) integrate(f(x),x,a,b)*integrate(g(y),y,c,d)
so A and B are the same
(%i13) is(A=B);
(%o13) true
however, if I do the following, which should be exactly equivalent, it
fails:
(%i14) C:integrate(g(x),x,c,d);
(%o14) integrate(g(x),x,c,d)
(%i15) A: integrate(C*f(x),x,a,b);
(%o15) integrate(f(x)*integrate(g(x),x,c,d),x,a,b)
it has failed to realise that the x in the subexpression is a different
variable from the x in the outer integral, so it keeps the constant inside
the integral
(%i16) B: C*'integrate(f(x),x,a,b);
(%o16) integrate(f(x),x,a,b)*integrate(g(x),x,c,d)
(%i17) is(A=B);
(%o17) false
...and it now thinks the two expressions A and B are provably not the same,
even though they are in fact equivalent. It would be ok (although a bit
lame) if it answered "maybe" here, but it seems to me that "false" is just
incorrect.
Nathaniel