Automatic Termination Analysis of Logic Programs