Лабораторна робота 2 — Створення системи логічних предикатів
Друга лабораторна робота курсу «Основи дискретної математики». Ви будуєте невелику базу знань мовою логічного програмування Prolog: описуєте генеалогічне дерево набором фактів і виражаєте родинні відношення (брат, сестра, батьки, дід, баба, дядько, тітка, двоюрідні) через правила — логічні формули над базовими предикатами. Робота виконується в онлайн-середовищі SWISH і є практичним продовженням Лекції 6 «Логіка предикатів».
Стисло
| Тема | Предикати як відношення; факти, правила та запити в Prolog |
| Передумова | Лекція 6 — Логіка предикатів |
| Середовище | SWISH SWI-Prolog — у браузері, реєстрація не потрібна |
| Результат | База знань (.pl-програма) + звіт (див. 5report.md) |
| Оцінювання | Три рівні: базовий 60–74 / середній 75–89 / високий 90–100 (див. 4task.md) |
Зміст
| # | Частина | Файл |
|---|---|---|
| 1 | Мета роботи | 1purpose.md |
| 2 | Методичні вказівки (теорія, середовище, приклади) | 2method.md |
| 4 | Завдання та порядок виконання | 4task.md |
| 5 | Зміст звіту | 5report.md |
| 6 | Контрольні запитання | 6questions.md |
Домовленості
- Мова. Програма (факти, правила, запити) — мовою Prolog; звіт — українською.
- Індивідуальний варіант. Значення для дерева (імена людей, зв’язки) ви обираєте самостійно; двох однакових дерев у групі бути не повинно. Дерево має бути достатньо розгалуженим, щоб усі предикати вашого рівня давали непорожні відповіді (див. вимоги в 4task.md).
- Пишете самі. У 2method.md показано метод на демонстраційному прикладі; правила для власного дерева ви складаєте самостійно. Готового коду для завдання не наведено.
- Синтаксична дисципліна Prolog. Імена-константи (атоми) пишуть з малої літери
(
ivan,petro), змінні — з великої (X,Y,Z). Кожне речення програми завершують крапкою. - Самодостатність. Уся потрібна теорія зібрана в 2method.md; зовнішні джерела не потрібні.
Підсумок
Робота перетворює поняття Лекції 6 — предикат як
відношення, квантори, вираження одних відношень через інші — на працездатну
програму. Спочатку родину описують фактами (man/1, woman/1, father/2,
mother/2), потім складніші відношення виводять правилами: brother, sister,
parents (базовий рівень), grandfather, grandmother (середній рівень), uncle,
aunt, cousin (високий рівень). Перевіряють результат запитами в SWISH,
спостерігаючи, як інтерпретатор виконує уніфікацію та пошук із поверненням.
Це прямий місток від логіки предикатів до декларативного програмування.