- •1Вопрос. Формализация
- •Дата( 1, май, 2004)
- •Дата( День, май, 2004)
- •6Вопрос унификации
- •7 И 8 и 20(согласование)вопрос. Декларативная семантика процедурной семантиками
- •9 Список
- •10 Типовые операции над списками в Прологе
- •12.Арифметические действия Прологовская арифметика.
- •18. Проверка типа терма объект данных
- •21.Рекурсии
Дата( 1, май, 2004)
Все компоненты в данном примере являются константами (две компоненты - целые числа и одна - атом). Компоненты могут быть также переменными или структурами. Произвольный день в мае можно представить структурой:
Дата( День, май, 2004)
Заметим, что День является переменной и ей можно приписать произвольное значение на некотором более позднем этапе вычислений. Такой метод структурирования данных прост и эффективен. Это является одной из причин того, почему Пролог естественно использовать для решения задач обработки символьной информации.
Как было сказано ранее, синтаксически все объекты данных в Прологе представляют собой термы.
Все структурные объекты можно изображать в виде деревьев. Корнем дерева служит функтор, ветвями, выходящими из него, - компоненты. Если некоторая компонента тоже является структурой, тогда ей соответствует поддерево в дереве, изображающем весь структурный объект.
6Вопрос унификации
Одним из наиболее важных аспектов программирования на Прологе являются понятия унификации (отождествления) и конкретизации переменных.
Пролог-машина пытается отождествить термы при доказательстве, или согласовании, целевого утверждения.
Переменные, входящие в утверждения, отождествляются особым образом - сопоставляются. Факт доказывается для всех значений переменной (переменных). Правило доказывается для всех значений переменных в головном целевом утверждении при условии, что хвостовые целевые утверждения доказаны. Предполагается, что переменные в фактах и головных целевых утверждениях связаны квантором всеобщности. К примеру, в рассмотренном выше утверждении
смертен(Некто) :- человек(Некто).
переменная Некто неявно квантифицируется как "любой".
Переменные принимают конкретные значения на время доказательства целевого утверждения.
В том случае, когда переменные содержатся только в хвостовых целевых утверждениях, правило считается доказанным, если хвостовое целевое утверждение истинно для одного или более значений переменных. Переменные, содержащиеся только в хвостовых целевых утверждениях, связаны квантором существования. Таким образом, они принимают конкретные значения на то время, когда целевое утверждение, в котором переменные были согласованы, остается доказанным.
Терм Х сопоставляется с термом Y по следующим правилам.
Если Х и Y - факты (константы или структуры), то они сопоставимы, только если они одинаковы (структуры сопоставимы тогда и только тогда, когда у них одни и те же главный функтор и арность и каждая из их соответствующих компонент сопоставима).
Если Х является константой или структурой, а Y - неконкретизированной переменной, то Х и Y сопоставимы и Y принимает значение Х.
Если Х и Y - неконкретизированные (свободные) переменные, то они сопоставимы, в этом случае говорят, что они сцеплены. В таблице приведены примеры отождествимых и неотождествимых термов.
Унификация часто используется для доступа к подкомпонентам термов. Например, при сопоставлении структур
a( X, 1 )
и
a( 2, 1 )
переменная X получит значение 2.