Ulle Endriss An Introduction to Prolog Programming