>>8 p(a). p(b). の述語定義がされているとします。 ?- p(X),p(Y),not(X=Y). X = a, Y = b; X = b, Y = a; no の重複を回避する方法はありません。重複を回避するには、最初から、 p/1でなく、p/2を p(1,a). p(2,b). のように定義して、 ?- p(N1,X),p(N2,Y),N1<N2. N1 = 1, X = a, N2 = 2, Y = b; no とするのが一案。 述語p/1のままだと、 組合せ(X,1,[A]) :- member(A,X). 組合せ([A|Y],N,[A|X]) :- N > 1,M is N - 1,組合せ(Y,M,X). 組合せ([_|Y],N,A) :- N > 1,組合せ(Y,N,A). ?- findall(U,p(U),L),組合せ(L,2,[X,Y]). が考えられます。