X = 1;
Y = 2;
X = 2;
Y = 1;
X = 2
Y = 2;
(c) X = 1;
Y = 1;
X = 1;
Y = 2;
5. 2
класс( Число, положительное) :-
Число > 0, !.
класс( 0, нуль) :- !.
класс( Число, отрицательное).
5. 3
разбить( [ ], [ ], [ ]).
разбить( [X | L], [X | L1], L2) :-
X >= 0, !,
разбить( L, L1, L2).
разбить( [X | L], L1, [X | L2]) .
разбить( L, L1, L2).
5. 4
принадлежит( Некто, Кандидаты),
not принадлежит( Некто, Исключенные)
5. 5
разность( [ ], _, [ ]).
разность( [X | L1], L2, L):-
принадлежит( X, L2), !,
разность( L1, L2, L).
разность( [X | L1], L2, [X | L]) :-
разность( L1, L2, L).
5. 6
унифицируемые( [ ], _, [ ]).
унифицируемые( [Первый | Остальные], Терм, Список) : -
not( Первый = Терм), !,
унифицируемые( Остальные, Терм, Список).
унифицируемые( [Первый | Остальные], Терм,
[Первый | Список] ) :-
унифицируемые( Остальные, Терм, Список).
Глава 6
6. 1
найтитерм( Терм) :-
% Пусть текущий входной поток - это файл f
read( Терм), !,
% Текущий терм из f сопоставим с Терм'ом?
write( Терм); % Если да - вывести его на терминал
найтитерм( Терм). % В противном случае - обработать
6. 2