Termination Proofs for Logic Programs Based on Predicate Inequalities