path(booshehr,shiraz). path(shiraz,esfahan). path(esfahan,tehran). path(tehran,mashhad). path(shiraz,yazd). path(yazd,mashhad). path(shiraz,tabas). travel(X,Y) :- path(X,Y). travel(X,Y) :- path(X,Z), print(Z),nl, travel(Z,Y). % ----------------------------------------- pathbi(X,Y) :- path(X,Y); path(Y,X). travelbi_user(X,Y) :- retractall(visited(Z)), asserta(visited(X)), asserta(visited(Y)), travelbi(X,Y). travelbi(X,Y) :- pathbi(X,Y). travelbi(X,Y) :- pathbi(X,Z), not(visited(Z)), asserta(visited(Z)), print(Z),nl, travelbi(Z,Y).