Факти та правила в мові Пролог, родинні стосунки
лабораторні роботи та завдання з програмування та інформатики, еге з інформатики


Prolog урок 3. Факти та правила, споріднені відносини
Умовні відносини або правила в Prolog
Розглянемо приклад, коли факти пов'язані умовним ставленням з іншими вже відомими фактами, в такому випадку вони можуть називатися правилами:
likes (cindy, X): - likes (bill, X). /* Сінді любить усе, що любить Білл */
likes(cindy, X) єзаголовком правила. likes(bill, X) єтілом правила або йогохвостовою метою.
Щоб правило стало істинним, необхідно, щоб його хвостова мета/цілі була/були істинними. Тобто. у нашому випадку, якщо Білл любить щось (тобто якщо вислів істинний), тоді і Сінді любить це (тобто тоді правило істинно).
X є бабусею Y, якщо X є мамою Z і Z є мамою Y. І якщо дивимося по батькові, а не по матері:
X є бабусею Y, якщо X є мамою Z і Z є татом Y.
Або так: Перше правило свідчить, що X є бабусею Y, якщо існує такий Z, що X є мамою Z, а Z - мамою Y. Друге правило свідчить, що X є бабусею Y, якщо існує такий Z, що X є мамою Z, а Z - татом Y.
Очевидно, що в прикладі X, Y і Z це змінні.
Змінні можуть бутивільними абопов'язаними.
Вільна змінна поки що не має значення. Такі змінні ще називаютьнеконкретизованими.
Змінна, яка набула якогось значення і виявилася пов'язаною з певним об'єктом, називаєтьсяпов'язаною.
likes (bill, Something) і green (Something).
Це правило можна інтерпретувати якБілл любить все зелене. У цьому прикладі Something - це змінна, т.к. починається з великої літери і без лапок.
domains a=symbol b=integer predicates pol(a,a) vozrast (a,b) clauses pol(ivan,boy). pol(sergey, boy). pol(mary,girl). vozrast(ivan,3). vozrast(sergey,4). vozrast (mary, 5).
- Мері любить яблука тільки, якщо вони зелені,
- Бет любить взагалі лише зелені фрукти та овочі,
- Мері любить яблука тільки якщо їх любить Бет.
Додайте відсутні фрагменти та реалізуйте запити у вікні dialog:
- чи любить Мері яблука,
- чи любить Бет апельсини.
Проаналізуйте відповіді запити.
domains a=symbol predicates likes (a,a) green(a) clauses likes (mary,apples). likes (beth, apples). likes(mary,oranges). likes (mary, tomatoes). likes (mary,apples)if ________. likes(___,__) if likes(___,__). likes (___,__)if green(__). green (apples). green(goroh).
Порядок виконання команд компілятором TProlog
Нехай програма на Турбо-Пролозі міститьфакт :
likes(mary,apples). /* Мері любить яблука */
Іправило :
likes(beth,X) if likes(mary,X). /* Бет любить це, якщо Мері любить це */
Вводимомету :
likes(beth,apples). /* бет любить яблука */
Турбо-Пролог приймає затвердження мети і починає пошук правил і фактів програми для порівняння з предикатом likes :
- Зіставлення з фактом: likes(mary,apples). – брехня
- Зіставлення із головною частиною правила: likes(beth,X) – змінної Х присвоюється значення apples
- Спроба виконання умови: if likes (mary, X)
- Перевірка підзадачі та підцілі: likes (mary, apples).
- Зіставлення з фактом: likes(mary,apples). -Істина.
Правило чи факт?
Якщо правило виглядає як:
likes (beth,apples)іf likes(mary,apples).
То це і правило і факт одночасно, т.к. голова правила має форму факт.
Але в іншому випадку, в голові правила може бути розташована змінна: