Learning Definite and Normal Logic Programs by Induction on Failure