Does the algorithm in Maxima use something like substitution as used by hand? y= cos(x) or sin(x) => dy = -sin(x)dx or cos(x)dx => I(x)=integrate(sin(x)*cos(x),x) = -cos^2(x) or sin^2(x)? Or does substitution not factor in at all?