% =============================================== % Демонстрационные запросы для 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.