아래에 언급 한 바와 같이이 all_neighbours 모든 이웃 마을의리스트 L을 반환 (L, X) 올바른 절차겠습니까이웃, 마을, 댐, 링크 관계 프롤로그 프로그램에서
town(a).
town(b).
town(c).
town(d).
dam(e).
dam(f).
link(a,b).
link(a,c).
link(c,d).
link(b,d).
link(b,c).
link(c,e).
link(a,e).
link(d,f).
neighbour(X,Y):- link(X,Y) ; link(Y,X).
X : all_neighbours (L, X) : - 도시 (Y), findall (Y, 이웃 (X, Y), L). 댐 (Y), 마을 (X) - : has_dam (L) :
이 올바른 절차 has_dam (L) 적어도 하나의 이웃 댐이있는 모든 도시의리스트 L을 반환 있을까 findall (X, 이웃 (X, Y), L).
이 올바른 절차 에는 이웃 댐이없는 모든 도시의리스트 L 반환 no_dam (L) 다음과 같습니다 no_dam (L) : - 마을 (X)를, (Y)를 댐하지, findall은 (X, 이웃 (X, Y), L).