Programming in Prolog