> > +            # We know it's a polynomial, isn't it?
> 
> Yes, polynomial or rational function.  

Ok, fine.

> But I don't see the point of passing hints here.  Those methods will
> be hit first, and it will just return (we know that for any rational
> function, ratint + poly is sufficient).

I do not make the assumption that these methods will really be called/tried first.
"integrate(...)" is a blackbox, you can give hints what it should do but other than
that you can not make any assumptions on what it really does. (This is at least
roughly how I'd expect it to work.)

> Furthermore, suppose new heuristics are added to speed up integrating rational
> functions, or heuristics to make the output simpler (e.g., along the lines of
> http://code.google.com/p/sympy/issues/detail?id=1280).  With it this
> way, they will not be called, even though there is no reason why they
> should be.

Good point.

Maybe we will need a more hierarchical control: define method groups like "poly"
and then it tries (one of) the methods that are approved for polynomial integration,
but you don't say exactly which one.

And if you want a specific one, then say method="poly_foo" or similar.

Just an idea to handle this.