Prolog 探索带有循环的图,使用成员谓词发出问题

Prolog 探索带有循环的图,使用成员谓词发出问题,prolog,Prolog,我试图探索一个可能有循环的图,所以我必须将我已经“访问”过的节点放入一个数组中。 问题是Prolog告诉我成员(Y,Ys)为true,因此谓词失败。。。 我知道存在一些数组,member(Y,Ys)可以保存,但为什么Prolog不搜索其他解决方案呢 tauReachable(X,Defs,[Y|Ys]) :- trans(X,tau,Defs,Y), not(member(Y,Ys)), tauReachable(X,Defs,Ys). tauReachable(_

我试图探索一个可能有循环的图,所以我必须将我已经“访问”过的节点放入一个数组中。 问题是Prolog告诉我成员(Y,Ys)为true,因此谓词失败。。。 我知道存在一些数组,
member(Y,Ys)
可以保存,但为什么Prolog不搜索其他解决方案呢

 tauReachable(X,Defs,[Y|Ys]) :-
    trans(X,tau,Defs,Y),
    not(member(Y,Ys)), 
    tauReachable(X,Defs,Ys).
 tauReachable(_X,_Defs,[]) :- !.

(trans:X是初始节点,tau是弧标签,def不重要,Y是到达节点)

我是这样做的:

 tauReachable(X,Defs,Y) :-
    tauReachableR(X,Defs,Y,[X]),
    !.
 tauReachableR(X,Defs,Y,Z) :-
    trans(X,tau,Defs,F),
    not(member(F,Z)),
    !, 
    append([F],Z,S),
    tauReachableR(X,Defs,Y,S).
 tauReachableR(X,Defs,Z,Z).