
% file: fsg1
% query: sentence([john, gives, mary, flowers])?


initial(q1).
final(q3).	final(q4).	final(q5).	final(q8).	final(q11).
transition(q1, john, q2).
transition(q2, sleeps, q3).
transition(q2, reads, q4).
transition(q2, gives, q6).
transition(q2, puts, q9).
transition(q4, a_book, q5).
transition(q6, mary, q7).
transition(q9, a_candle, q10).
transition(q7, flowers, q8).
transition(q10, on_the_table, q11).

sentence(S) :-
    initial(Q),
    sentence(Q, S).
sentence(Q, [X|Xs]) :-
    transition(Q, X, Q1), sentence(Q1, Xs).
sentence(Q, []) :-
    final(Q).

