% file: recurs
% query: sentence(john,on_the_table)?

follows('#', john).
follows(john, sleeps).
follows(john, reads).
follows(john, gives).
follows(john, puts).
follows(reads, a_book).
follows(gives, mary).
follows(puts, a_book).
follows(mary, flowers).
follows(a_book, on_the_table).
follows(sleeps, '.').
follows(reads, '.').
follows(a_book, '.').
follows(flowers, '.').
follows(on_the_table, '.').

sentence(WordA,WordB) :- 
    startsentence(WordA),
    restofsentence(WordA,WordB).

restofsentence(WordA,WordB) ;-
    midsentence(WordA,WordB),
    endsentence(WordB).

midsentence(WordA,WordB) :-
    follows(WordA,WordB).    
midsentence(WordA, WordC) :-
    follows(WordA, WordB),
    restofsentence(WordB,WordC).
   
startsentence(Word) :-
    follows('#', Word).

endsentence(Word) :-
    follows(Word, '.').
