For example the function IntegrateAlgebraic uses many different heuristics to try to find the best form of a integral, but its a very challenging problem.
I might have been able to resolve some of the challenging problems with IntegrateAlgebraic, which uses Laurent Series for example to compute the simplest expansion in terms of elementary functions.