@smichr, 
> return not self.free_symbols

Well your argument is totally correct. But may be less extensible. What would you expect for an expression like ```Integral(1, (x, y-1, y))```. Your code would give ```False``` for this where as ```Integral(1, (x, y-1, y)).doit() = 1```.

@skirpichev, @asmeurer, @smichr, Please refer [this](https://github.com/sympy/sympy/pull/7272#issuecomment-38008819)