in_room(banana). in_room(chair). in_room(monkey). dexterous(monkey). tall(chair). ~(close_to(banana,floor)). can_move(monkey,chair,banana). can_climb(monkey,chair). can_reach(X,Y):-dexterous(X), close_to(X,Y). close_to(X, banana):-get_on(X,Y), under(Y,banana), tall(Y). close_to(Z,floor):-in_room(X),in_room(Y),in_room(Z),can_move(X,Y,Z). under(Y,Z):-in_room(X), in_room(Y), in_room(Z), can_move(X,Y,Z). get_on(X,Y):-can_climb(X,Y).