TURBO PROLOG. Терёхин В.В. - 49 стр.

UptoLike

Составители: 

49
В Турбо-Прологе эта задача решается конструированием правил, не
содержащих в себе данных, т. е. правил нулевой арности. Задача, таким
образом, сводится к написанию сокращенного варианта запроса. Пояснить
только что сказанное можно на следующем примере. Представим себе не-
кую гипотетическую семью: Фрэнк и Мэри являются мужем и женой. Их сы-
на зовут Сэмом, а дочку - Дебби. Ниже приведен небольшой диалог, касаю-
щийся этой семьи.
Вопрос: Кем приходятся друг другу Дебби и Сэм ?
Ответ : Дебби - сестра Сэма.
Вопрос: Из чего Вы это заключили ?
Ответ : У Дебби и Сэма одни и те же родители, Дебби - девочка. Та-
ким образом, Дебби - сестра
Сэма.
Второй из вопросов является разговорной формулировкой правила,
которое будет использоваться для ответа на запрос. Это правило можно пе-
рефразировать таким образом:
Дебби - сестра Сэма, если
Дебби - существо женского пола,
и родители Дебби есть родители Сэма.
Фраза включает в себя условие "если" (if), который логически связыва-
ет оба
утверждения. Утверждение, предшествующее "если" называется за-
ключением или логическим следствием, а утверждение, следующее за "если"
- допущением или предпосылкой.
Предикатные выражения являются теми блоками, из которых в Проло-
ге строятся правила. Факты, описывающие отношения между Фрэнком,
Мэри, Сэмом и Дебби можно сформулировать при помощи таких утвержде-
ний Турбо-Пролога:
male("Frank"). /* Фрэнк -
мужского пола */
male("Sam"). /* Сэм - мужского пола */
female("Mary"). /* Мэри - женского пола */
female("Debbie"). /* Дебби - женского пола */
parents("Sam","Frank","Mary"). /* Родители Сэма есть
Фрэнк и Мери */
parents("Debbie","Frank","Mary").
/* Родители Дебби есть Фрэнк и Мери */
Имея в наличии эти утверждения, необходимо лишь ввести правило,
задающее отношение брат-сестра:
sister(Sister,Brother) if female(Sister),
parents(Sister,Father,Mother),
parents(Brother,Father,Mother).
Отметим, что в формулировке правила нет
никаких данных о конкрет-
ной семье; объекты Sister, Brother, Father и Mother являются переменными.
Двойное использование предиката parents устанавливает логиче-
скую связь между переменными Sister и Brother. Наличие предиката female
позволяет выбрать ребенка женского пола. Три предиката предпосылки
правила вполне достаточны для получения нужного заключения. Программа
      В Турбо-Прологе эта задача решается конструированием правил, не
содержащих в себе данных, т. е. правил нулевой арности. Задача, таким
образом, сводится к написанию сокращенного варианта запроса. Пояснить
только что сказанное можно на следующем примере. Представим себе не-
кую гипотетическую семью: Фрэнк и Мэри являются мужем и женой. Их сы-
на зовут Сэмом, а дочку - Дебби. Ниже приведен небольшой диалог, касаю-
щийся этой семьи.
      Вопрос: Кем приходятся друг другу Дебби и Сэм ?
      Ответ : Дебби - сестра Сэма.
      Вопрос: Из чего Вы это заключили ?
      Ответ : У Дебби и Сэма одни и те же родители, Дебби - девочка. Та-
ким образом, Дебби - сестра Сэма.
      Второй из вопросов является разговорной формулировкой правила,
которое будет использоваться для ответа на запрос. Это правило можно пе-
рефразировать таким образом:
      Дебби - сестра Сэма, если
            Дебби - существо женского пола,
            и родители Дебби есть родители Сэма.
      Фраза включает в себя условие "если" (if), который логически связыва-
ет оба утверждения. Утверждение, предшествующее "если" называется за-
ключением или логическим следствием, а утверждение, следующее за "если"
- допущением или предпосылкой.
      Предикатные выражения являются теми блоками, из которых в Проло-
ге строятся правила. Факты, описывающие отношения между Фрэнком,
Мэри, Сэмом и Дебби можно сформулировать при помощи таких утвержде-
ний Турбо-Пролога:
      male("Frank"). /* Фрэнк - мужского пола */
      male("Sam").       /* Сэм - мужского пола */
      female("Mary"). /* Мэри - женского пола */
      female("Debbie"). /* Дебби - женского пола */
      parents("Sam","Frank","Mary"). /* Родители Сэма есть
                                            Фрэнк и Мери */
      parents("Debbie","Frank","Mary").
            /* Родители Дебби есть Фрэнк и Мери */
      Имея в наличии эти утверждения, необходимо лишь ввести правило,
задающее отношение брат-сестра:
            sister(Sister,Brother) if female(Sister),
                         parents(Sister,Father,Mother),
                         parents(Brother,Father,Mother).
      Отметим, что в формулировке правила нет никаких данных о конкрет-
ной семье; объекты Sister, Brother, Father и Mother являются переменными.
      Двойное использование предиката parents устанавливает логиче-
скую связь между переменными Sister и Brother. Наличие предиката female
позволяет выбрать ребенка женского пола. Три предиката предпосылки
правила вполне достаточны для получения нужного заключения. Программа


                                                                         49