posible bug - clashing variable names in integrals



On a similar note, am I right to say the following should not return false?

(%i20) A: 'integrate(f(x),x,a,b);
(%o20) integrate(f(x),x,a,b)
(%i21) B: 'integrate(f(y),y,a,b);
(%o21) integrate(f(y),y,a,b)
(%i22) is(A=B);
(%o22) false

the two expressions are equivalent, the only difference being the name of a
bound variable.  So it should return "true" or "maybe" but not false. It
works with ordinary (non-integral) functions:

(%i24) f(x):=x^2;
(%o24) f(x):=x^2
(%i25) g(y):=y^2;
(%o25) g(y):=y^2
(%i26) is(f(z)=g(z));
(%o26) true

Nathaniel


2009/10/3 Nathaniel Virgo <nathanielvirgo at gmail.com>

> 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
>
>