0
に部分項の出現を見つけるために、Nの値が1の代わりに2であることが出てきた:述語クエリの実行中用語
出現(X、S(X、T(X、Y))、 N)。 N = 1
occurrences(Sub,Term,R) :- occurrences(Sub,Term,0,R).
occurrences(Sub,Sub,Acc,R) :- R is Acc + 1.
occurrences(Sub,Term,Acc,R) :- functor(Term,_,N),occurrences(N,Sub,Term,Acc,R).
occurrences(N,Sub,Term,Acc,R4) :- N > 0, arg(N,Term,R), occurrences(Sub,R,Acc,R2),
N1 is N-1, occurrences(N1,Sub,Term,R2,R4).
occurrences(N,_,_,Acc,Acc) :- N < 1.