% Examples of the effect of forcing a predicate to backtrack by failure. poem(N) :- open(A, N), !, closer(B, N), append(A,B,AB), append(AB,'.', C), write(C), nl. closer(C, 0) :- !, fail. closer(C, N) :- N > 0, contin(C). closer(C, N) :- N > 0, contin(C1), N1 is N - 1, closer(C2, N1), append(C1, C2, C). contin(' is a rose'). open('A rose', _). :- write('Predicate poem(N). loaded'), nl.