, , , . , :
% subset(-Set, +Set)
subset([X|L], [X|R]) :-
subset(L, R).
subset(L, [_|R]) :-
subset(L, R).
subset([], []).
:
:
?- subset(X, [1,2,3]), write(X), nl, fail; true.
[1,2,3]
[1,2]
[1,3]
[1]
[2,3]
[2]
[3]
[]
:
?- subset([1,2,3], X), write(X), nl, fail; true.
[]
[1]
[1,2]
[1,2,3]
[1,3]
[1,3,2]
[2]
[2,1]
[2,1,3]
[2,3]
[2,3,1]
[3]
[3,1]
[3,1,2]
[3,2]
[3,2,1]
| P (A) | = 2 ^ | A |, 3- 8 . , , .