- Философия, эзотерика:
- Религии:
- Познавательное
(обо всём)
Факты используются для представления данных, а правила используются для вывода логических заключений, то есть новых фактов. Факты и правила называются утверждениями. Типичная программа на Прологе (Prolog) содержит факты и правила, основанные на самых различных взаимосвязях предикатов.
Факт записывается как предикат с одним или более объектами. Но факт может быть предикатом, не содержащим объектов, то есть предикатом с нулевой арностью. См. "Предикаты разных арностей"
Факт–утверждение:
finds(john,gold). /* Джон нашел золото */
В программе на Прологе утверждения для одного и того же предиката группируются вместе.
Правило используется Прологом (Prolog) для проверки условия вывода нового факта. Правила в Прологе (Prolog) записываются в разделе утверждений (clauses). Программа может содержать достаточно много правил, вырабатывающих различные заключения. Эффект введения правил точно такой же, как если бы программа содержала большое число утверждений-фактов.
Правила имеют левую часть (голову) и правую часть, следующую за символом :- (условия правила или тело). Левая часть правила истинна, если истинна правая часть правила. Правила генерируют новые факты, когда все утверждения в теле оказываются вычисленными.
Так как головы утверждений, являющиеся правилами, имеют форму фактов, то правила могут рассматриваться как факты. Но, тем не менее, различия между фактами и правилами весьма существенны.
При трансляции утверждений Пролог (Prolog) контролирует правильность написания имени предиката, количество объектов и типы их доменов.
Пример использования правила:
отношение(объект1,объект2) | условие | отношение(объект1,объект2) |
любит (бет, X) | если | любит (мэри, X) |
predicates likes(symbol,symbol) clauses likes(mary, apples). likes(beth, X) if likes(mary, X).
«Бет любит это, если Мэри любит это» - условная предпосылка со связкой «если», указывающей на условное отношение. Местоимение «это» может иметь переменное значение, изменяющиеся от предложения к предложению.
Как Пролог определяет, что надо подставить «яблоки» вместо X в этом правиле? Пролог сопоставляет все доступные ему факты (в данном случае, кто что любит) с любым правилом, с помощью которого могут быть выведены новые факты. Пролог не предоставляет возможность программисту выполнить такой приказ, как «на данном этапе сравнить X с яблоками и проверить, что это сравнение удовлетворяет некоторым условиям».
Пролог построен так, что он автоматически пытается выполнить сопоставление, используя принципы логики предикатов. Программисту только необходимо, используя синтаксис Пролога, описать к каким заключениям приведут какие условия. То есть необходимо сформулировать логические взаимоотношения, а программа использует эти утверждения о логических связях для получения заключения (новых фактов).
Для слова if (если) использует специальный символ :- (двоеточие с последующим тире).
Правило–утверждение:
is(john,rich) if finds(john,gold). /* Джон богат, если Джон нашел золото */ is(john,rich) :- finds(john,gold).
Часто условия требуют более одной предпосылки. Например:
«Джон и Мэри женаты, если Мэри жена Джона и если Джон муж Мэри». married(john,mary) if wife(john,mary) and husband(mary,john).
Данное правило имеет два условия, соединенные словом and (и). Это есть связка двух условий, объединенных словом and. В Прологе вместо слова and часто используется запятая (,).
Также в Прологе может использоваться уловие ИЛИ (or). В Прологе вместо слова or часто используется точка с запятой (;).
married(john,mary) :- wife(john,mary); husband(mary,john).
Пример использования условия and:
/* Программа проверки цели: женаты ли John и Mary? */ predicates married(symbol,symbol) wife(symbol,symbol) husband(symbol,symbol) clauses wife(john,mary). husband(mary,john). /* Джон и Мэри женаты, если (:-) Мэри жена Джона и (,) если Джон муж Мэри */ married(john,mary) :- wife(john,mary), husband(mary,john). married(mary,john) :- wife(john,mary), husband(mary,john).
На запрос цели необходимо ввести married(john,mary) или married(mary,john)
!!Рекомендуем: Семейная Энциклопедия Здоровья ⇒ Что должен знать современный человек? ⇒ Самоанализ. Работа над собой ⇒ Оглавление ⇒ Главная сайта
Обсуждение