# 1. Мета роботи **Навчитися описувати відношення предметної області системою логічних предикатів і реалізовувати цю систему мовою Prolog: задавати знання фактами, виражати похідні відношення правилами (логічними формулами над базовими предикатами) та отримувати відповіді запитами.** Виконавши роботу, студент повинен уміти: - **тлумачити предикат як відношення** — розуміти місність (арність) предиката, його область визначення та значення $\{1,0\}$, і бачити $n$-місний предикат як підмножину декартового степеня $M^{n}$ (зв'язок з [Лекцією 6](../../Lectures/ODM-L06.md)); - **формалізувати предметну область фактами** — описати генеалогічне дерево набором фактів `man/1`, `woman/1`, `father/2`, `mother/2` із власними значеннями; - **виражати похідні відношення правилами** — записувати родинні відношення (`brother`, `sister`, `parents`, `grandfather`, `grandmother`, `uncle`, `aunt`, `cousin`) як **кон'юнкцію** базових предикатів з умовою нерівності `\=`, спираючись на допоміжний предикат `parent/2`; - **розрізняти атоми та змінні** — застосовувати правило «мала літера — константа, велика — змінна» й розуміти роль анонімної змінної `_`; - **формулювати й читати запити** — ставити запитання до бази знань і правильно тлумачити відповіді `true`/`false` та підстановки значень змінних; - **пояснювати механізм виконання** — на прикладі своїх запитів описати **уніфікацію** та **пошук із поверненням** (backtracking) і причину появи кількох відповідей; - **працювати в середовищі SWISH** — набирати програму, зберігати її та виконувати запити в онлайн-інтерпретаторі [SWI-Prolog](https://swish.swi-prolog.org/). Робота закріплює матеріал [Лекції 6 — Логіка предикатів](../../Lectures/ODM-L06.md), перетворюючи означення предиката, кванторів і законів алгебри предикатів на невелику, але повноцінну **базу знань**, яку можна запитувати.