|
|
% ===============================================
|
|
|
% Демонстрационные запросы для lab8
|
|
|
% ===============================================
|
|
|
|
|
|
% Запуск демонстрации
|
|
|
demo :-
|
|
|
write('=== ДЕМОНСТРАЦИЯ СЕМЕЙНОЙ БАЗЫ ДАННЫХ ==='), nl, nl,
|
|
|
|
|
|
% 1. Демонстрация проверки пола
|
|
|
write('1. ПРОВЕРКА ПОЛА КОНКРЕТНЫХ ЧЛЕНОВ СЕМЬИ'), nl,
|
|
|
write('=========================================='), nl,
|
|
|
test_gender('ivan'),
|
|
|
test_gender('anna'),
|
|
|
test_gender('petr'),
|
|
|
test_gender('elena'),
|
|
|
nl,
|
|
|
|
|
|
% 2. Демонстрация предикатов men и women
|
|
|
write('2. ПРЕДИКАТЫ MEN И WOMEN'), nl,
|
|
|
write('========================='), nl,
|
|
|
men,
|
|
|
nl,
|
|
|
women,
|
|
|
nl,
|
|
|
|
|
|
% 3. Демонстрация родительских отношений
|
|
|
write('3. РОДИТЕЛЬСКИЕ ОТНОШЕНИЯ'), nl,
|
|
|
write('========================='), nl,
|
|
|
demo_parents,
|
|
|
nl,
|
|
|
|
|
|
% 4. Демонстрация предиката children
|
|
|
write('4. ПРЕДИКАТ CHILDREN(X)'), nl,
|
|
|
write('======================='), nl,
|
|
|
demo_children,
|
|
|
nl,
|
|
|
|
|
|
% 5. Демонстрация материнских отношений
|
|
|
write('5. МАТЕРИНСКИЕ ОТНОШЕНИЯ'), nl,
|
|
|
write('========================'), nl,
|
|
|
demo_mothers,
|
|
|
nl,
|
|
|
|
|
|
% 6. Демонстрация братских отношений
|
|
|
write('6. БРАТСКИЕ ОТНОШЕНИЯ'), nl,
|
|
|
write('====================='), nl,
|
|
|
demo_brothers,
|
|
|
nl,
|
|
|
|
|
|
% 7. Демонстрация отношений братьев и сестер
|
|
|
write('7. ОТНОШЕНИЯ БРАТЬЕВ И СЕСТЕР'), nl,
|
|
|
write('============================='), nl,
|
|
|
demo_siblings,
|
|
|
nl,
|
|
|
|
|
|
write('=== ДЕМОНСТРАЦИЯ ЗАВЕРШЕНА ==='), nl.
|
|
|
|
|
|
% Вспомогательные предикаты для демонстрации
|
|
|
|
|
|
test_gender(Person) :-
|
|
|
write('?- man('), write(Person), write('). -> '),
|
|
|
(man(Person) -> write('true') ; write('false')), nl,
|
|
|
write('?- woman('), write(Person), write('). -> '),
|
|
|
(woman(Person) -> write('true') ; write('false')), nl.
|
|
|
|
|
|
demo_parents :-
|
|
|
write('Примеры запросов:'), nl,
|
|
|
write('?- parent(ivan, petr). -> '),
|
|
|
(parent(ivan, petr) -> write('true') ; write('false')), nl,
|
|
|
write('?- parent(anna, elena). -> '),
|
|
|
(parent(anna, elena) -> write('true') ; write('false')), nl,
|
|
|
write('?- parent(petr, ivan). -> '),
|
|
|
(parent(petr, ivan) -> write('true') ; write('false')), nl,
|
|
|
nl,
|
|
|
write('Поиск всех детей ivan:'), nl,
|
|
|
write('?- parent(ivan, X).'), nl,
|
|
|
forall(parent(ivan, X), (write(' X = '), write(X), nl)).
|
|
|
|
|
|
demo_children :-
|
|
|
write('children(ivan):'), nl,
|
|
|
children(ivan),
|
|
|
nl,
|
|
|
write('children(petr):'), nl,
|
|
|
children(petr),
|
|
|
nl,
|
|
|
write('children(dmitry):'), nl,
|
|
|
children(dmitry).
|
|
|
|
|
|
demo_mothers :-
|
|
|
write('Проверка материнства:'), nl,
|
|
|
write('?- mother(anna, petr). -> '),
|
|
|
(mother(anna, petr) -> write('true') ; write('false')), nl,
|
|
|
write('?- mother(ivan, petr). -> '),
|
|
|
(mother(ivan, petr) -> write('true') ; write('false')), nl,
|
|
|
nl,
|
|
|
write('Поиск матери:'), nl,
|
|
|
write('mother(petr):'), nl,
|
|
|
mother(petr),
|
|
|
write('mother(dmitry):'), nl,
|
|
|
mother(dmitry).
|
|
|
|
|
|
demo_brothers :-
|
|
|
write('Проверка братства:'), nl,
|
|
|
write('?- brother(petr, elena). -> '),
|
|
|
(brother(petr, elena) -> write('true') ; write('false')), nl,
|
|
|
write('?- brother(elena, petr). -> '),
|
|
|
(brother(elena, petr) -> write('true') ; write('false')), nl,
|
|
|
nl,
|
|
|
write('Поиск братьев:'), nl,
|
|
|
write('brothers(elena):'), nl,
|
|
|
brothers(elena),
|
|
|
write('brothers(svetlana):'), nl,
|
|
|
brothers(svetlana).
|
|
|
|
|
|
demo_siblings :-
|
|
|
write('Проверка родства:'), nl,
|
|
|
write('?- b_s(petr, elena). -> '),
|
|
|
(b_s(petr, elena) -> write('true') ; write('false')), nl,
|
|
|
write('?- b_s(elena, petr). -> '),
|
|
|
(b_s(elena, petr) -> write('true') ; write('false')), nl,
|
|
|
write('?- b_s(ivan, petr). -> '),
|
|
|
(b_s(ivan, petr) -> write('true') ; write('false')), nl,
|
|
|
nl,
|
|
|
write('Поиск братьев и сестер:'), nl,
|
|
|
write('b_s(petr):'), nl,
|
|
|
b_s(petr),
|
|
|
write('b_s(dmitry):'), nl,
|
|
|
b_s(dmitry).
|
|
|
|
|
|
% Демонстрация трассировки
|
|
|
trace_demo :-
|
|
|
write('=== ДЕМОНСТРАЦИЯ ТРАССИРОВКИ ==='), nl,
|
|
|
write('Включаем трассировку для предиката men...'), nl,
|
|
|
write('(В интерактивном режиме используйте: trace, men, notrace)'), nl,
|
|
|
nl,
|
|
|
write('Для запуска трассировки выполните:'), nl,
|
|
|
write('make trace'), nl,
|
|
|
nl. |