Факти та правила в мові Пролог, родинні стосунки

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

мові
правила

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).

  1. Мері любить яблука тільки, якщо вони зелені,
  2. Бет любить взагалі лише зелені фрукти та овочі,
  3. Мері любить яблука тільки якщо їх любить Бет.

Додайте відсутні фрагменти та реалізуйте запити у вікні dialog:

  1. чи любить Мері яблука,
  2. чи любить Бет апельсини.

Проаналізуйте відповіді запити.

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 :

  1. Зіставлення з фактом: likes(mary,apples). – брехня
  2. Зіставлення із головною частиною правила: likes(beth,X) – змінної Х присвоюється значення apples
  3. Спроба виконання умови: if likes (mary, X)
  4. Перевірка підзадачі та підцілі: likes (mary, apples).
  5. Зіставлення з фактом: likes(mary,apples). -Істина.

Правило чи факт?

Якщо правило виглядає як:

likes (beth,apples)іf likes(mary,apples).

То це і правило і факт одночасно, т.к. голова правила має форму факт.

Але в іншому випадку, в голові правила може бути розташована змінна: