trip(To) --> trip(0,To). trip(Here,Here) --> []. trip(From,To) --> step(HowMuch), {NewFrom is From + HowMuch}, trip(NewFrom,To). step(1) --> [forward]. step(-1) --> [back]. step(0) --> [think]. /********************* ?- phrase(trip(N), [forward]). ?- phrase(trip(N), [forward,forward,think,back,think,forward,forward]). **********/