What is the correct way in sage to check that the result of integration has evaluated? I.e. the result has no unevaluated integrate
remaining in it?
The way I am checking fail in some cases. For example
sage: var('x')
sage: anti=integrate((4*x - sqrt(-x^2 + 1))/(sqrt(-x^2 + 1) + 5), x)
sage: anti
-x - 4*sqrt(-x^2 + 1) + 5*integrate(1/(sqrt(x + 1)*sqrt(-x + 1) + 5), x) + 20*log(sqrt(-x^2 + 1) + 5)
The above did not fully evaluate, since there is an integrate
inside the result returned. But when I do
sage: isinstance(anti.operator(), sage.symbolic.integration.integral.IndefiniteIntegral)
False
I was expecting to get True
. It failed the check, because integrate
was not the first operator. This one works
sage: anti=integrate(1/(sqrt(x + 1)*sqrt(-x + 1) + 5), x)
sage: isinstance(anti.operator(), sage.symbolic.integration.integral.IndefiniteIntegral)
True
So what is the correct way to tell sage to scan the whole expression and if there is an instance of integrate
any where, to return True
Thank you
--Nasser