0.10. Семантика пролога Три семантические модели

Термин семантика (смысл) формулы символической логики относится к истинностному значению этой формулы. Когда говорят о семантике константы в формуле, то имеют в виду ее истинностное значение с учетом области интерпретации. С другой стороны, когда речь заходит о вычислениях, то под семантикой некоторой конструкции языка программирования обычно понимается поведение компьютера при выполнении этой конструкции. Поскольку Пролог одновременно является и логическим языком, и языком программирования, то к нему применимы все эти трактовки термина семантика,

Для объяснения смысла Пролог-программы применяются три семантические модели: декларативная модель, процедурная модель и модель в виде абстрактной машины. Существование трех семантических моделей придает языку Пролог большую выразительность.

Декларативная модель

В декларативной семантической модели Пролога специфицируются истинностные значения конкретных случаев отношений. Здесь употребляется слово декларативный, потому что во фразах языка Пролог декларируется (т. е. объявляется), что будут соблюдаться некоторые отношения между аргументами, если выполнены все условия, входящие в эти фразы. К примеру, фразу

начальник (Фамилия, Оклад):—

служащий (Фамилия, Оклад), Оклад > 70000.

можно прочесть так:

Некое лицо (Фамилия) является начальником, если

он или она является служащим

с окладом, превышающим 70000 долларов.

В соответствии с прочтением для декларативной модели фразы Пролога являются формулами логики предикатов первого порядка, записанными в форме фраз Хорна. В качестве логических соединителей могут выступать только лишь "если", "и" и "или". Порядок следования условий не имеет значения, так как считается, что все условия должны соблюдаться одновременно. Множество фраз, составляющих Пролог-программу, описывает существенные особенности логической структуры прикладной области.

Процедурная модель

В соответствии с процедурной семантической моделью Пролога условия, входящие в состав фразы, специфицируют процесс установления истинностного значения данной фразы. Тем самым условия трактуются как последовательность шагов, которые необходимо успешно выполнить для того, чтобы соблюдалось отношение, приведенное в заключении этой фразы. Множество фраз с одним и тем же именем предиката и с одинаковым количеством аргументов трактуется как процедура. Запрос с указанием того же имени предиката и того же числа аргументов, что и в процедуре, трактуется как вызов этой процедуры. Для того чтобы запрос оказался успешным, необходимо, чтобы вызываемая в нем процедура была успешно выполнена. Каждое условие во фразе также понимается как вызов процедуры.

При процедурном прочтении смысл приведенной выше фразы "начальник" будет таким:

Один из способов обнаружить начальника — это:

во-первых, отыскать служащего

и, во-вторых, проверить, превышает ли оклад

этого служащего сумму в 70000 долларов.

Для процедурной модели важен порядок, в котором выполняются условия.

Модель в виде абстрактной машины

При прочтении с позиций декларативной модели Пролог-программа — это описание логической структуры. Интерпретатор языка Пролог служит активной силой (т. е. процедурой), которая способна вывести следствия из этого описания. При выполнении запроса интерпретатор применяет по отношению к множеству фраз Пролога некоторую стратегию решения задачи. С точки зрения вычислений эта стратегия может быть описана при помощи некоторой абстрактной машины. В языке Пролог запрос и множество фраз программы имеют вычислительный смысл. Это проявляется в том, что они вызывают определенное поведение интерпретатора Пролога. Модель в виде абстрактной машины описывает смысл запроса и множества фраз через действия этой машины.

Как отмечалось в разд. 0. 6, действия такой абстрактной машины можно рассматривать как применение правила резолюции. Можно также пояснить действия этой машины и через операции со стеком. Такое объяснение предлагается в гл. 3.

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие