PROGRAMMING IN PROLOG