Define rules for the predicate Just started reading a book about AI. There is a very basic exercise but I can't figure it out, so here we go. The book is  Simply Logical: Intelligent Reasoning by Example

The exercise is in the page 19. 


  Two stations are ‘not too far’ if they are on the same or a different
  line, with at most one station in between. Define rules for the
  predicate not_too_far.


The only rules I've seen are nearby and connected and don't know how to use this. What I've done so far is this:


  not_too_far(X,Y) :- nearby(X,Y)
Your intuition is good. Because "nearby" is only defined with "connected", there could only be 1 station between them. However, it says that the stations are "not_too_far" if at most one station is between them. What about if no stations are between them? If 2 stations are "connected" they should be "not_too_far" as well. 

So it should be:

not_too_far(X,Y) :- connected(X,Y) ; nearby(X,Y).


Where ; denotes OR.