%% future(writing,subject,[[writing,assignment],[assignment,subject],[writing,exam],[exam,subject]],Path). Path=[writing,assignment,subject] future(Start,End,Pairs,Path) :- future(Start,End,Pairs,[Start],Path). future(Start,Start,_Pairs,Path,Path). future(Start,End,Pairs,Path1,Path2) :- member([Start,Next],Pairs), append(Path1,[Next],Path3), future(Next,End,Pairs,Path3,Path2).