The thing that was actually being tickled by the subscript in this
example was ELEMXPT. Unfortunately, I think if you fix that to deal
correctly with subscripted variables... you get a bind stack
So I went for a stupider fix in SININT itself, where we replace
integrate (f(x[y]), x[y])
integrate (f(z), z)
(where z is a gensym, obviously) and then substitute back at the end. I
think this is probably a much more robust approach than playing
whack-a-mole with all the bits of the integration code that assume
variables are atomic.
I don't replace all non-atomic expressions in this way. Presumably this
replacement would already exist if there weren't some integration tricks
we can do that are cleverer than just substituting.