1. Мета роботи
Навчитися описувати відношення предметної області системою логічних предикатів і реалізовувати цю систему мовою Prolog: задавати знання фактами, виражати похідні відношення правилами (логічними формулами над базовими предикатами) та отримувати відповіді запитами.
Виконавши роботу, студент повинен уміти:
- тлумачити предикат як відношення — розуміти місність (арність) предиката, його область визначення та значення , і бачити -місний предикат як підмножину декартового степеня (зв’язок з Лекцією 6);
- формалізувати предметну область фактами — описати генеалогічне дерево набором
фактів
man/1,woman/1,father/2,mother/2із власними значеннями; - виражати похідні відношення правилами — записувати родинні відношення
(
brother,sister,parents,grandfather,grandmother,uncle,aunt,cousin) як кон’юнкцію базових предикатів з умовою нерівності\=, спираючись на допоміжний предикатparent/2; - розрізняти атоми та змінні — застосовувати правило «мала літера — константа,
велика — змінна» й розуміти роль анонімної змінної
_; - формулювати й читати запити — ставити запитання до бази знань і правильно
тлумачити відповіді
true/falseта підстановки значень змінних; - пояснювати механізм виконання — на прикладі своїх запитів описати уніфікацію та пошук із поверненням (backtracking) і причину появи кількох відповідей;
- працювати в середовищі SWISH — набирати програму, зберігати її та виконувати запити в онлайн-інтерпретаторі SWI-Prolog.
Робота закріплює матеріал Лекції 6 — Логіка предикатів, перетворюючи означення предиката, кванторів і законів алгебри предикатів на невелику, але повноцінну базу знань, яку можна запитувати.