Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пролог =).doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

1.6 Правила.

Введем отношение peбенок child, обратное к parent "родитель". Можно было бы определить аналогично:

child (liz, tom).

Но можно использовать, что отношение child обратно к parent и записать в виде утверждения- правила :

child(Y, X):-parent (X, Y).

Правило читается так:

Для всех X и Y Y -child X, если X -parent Y.

Правило отличается от факта тем, что факт всегда истина, а правило описывает утверждение, которое будет истинной, если выполнено некоторое условие. Поэтому в правиле выделяют: заключение условие

child(Y, X)

:-

parent (X, Y).

голова

head

тело

body

Если условие parent (X, Y). выполняется, то логическим следствием из него будет утверждение child(Y, X).

Как правило используется прологом :

Зададим вопрос

?-child(liz, tom).

В программе нет данных о child. Но есть правило, которое верно для всех X Y, в том числе для liz и tom. Мы должны применить правило для этих значений. Для этого надо подставить в правило вместо X - tom, a вместо Y - liz.

Говорят, что переменные будут связаны, а операция будет называться подстановкой. Получаем конкретный случай для правила

child(liz, tom):-parent (tom, liz).

Условная часть приняла вид parent (tom, liz). Теперь надо выяснить выполняется ли это условие. Исходная цель child(liz,tom) заменяется подцелью parent (tom, liz)., которая выполняется, поэтому пролог ответит "yes".

1.7 Конъюнкция в правилах.

Добавим еще одно отношение в базу данных, унарное, определяющее пол.

male(tom). male(bob). male(jim). female(liz). female(pam). female(pat). female(ann).

Теперь определим отношение mother. Оно описывается следующим образом:

Для всех X Y X -mother Y, if X- parent Y и X -female.

Таким образом правило будет

mother(X, Y):-parent(X, Y), female(X).

Можно записать

mother(X, Y):-parent(X, Y),

female(X).

или

mother(X, Y):-

parent(X, Y), female(X).

Запятая между двумя условиями означает конъюнкцию целей. Это означает, что два условия должны быть выполнены одновремено. Как система ответит на вопрос?

?-mother (pam, bob).

yes

Находится правило mother, производится подстановка

X=pam Y=bob

Получаем правило

mother(pam, bob):- parent(pam, bob), female(pam).

Сначала удовлетворяются parent , а затем female

Пролог отвечает: yes Вопрос :

?-mother (X, bob).

X=pam